字符串处理¶
一、字符串的处理¶
1、c¶
字符串是编程语言中非常常用的一种数据类型,字符串的处理也是各类算法竞赛中考察较多的一类题型。字符串,简单地说,就是由若干个字符连接在一起的串。
C语言中规定:末尾以\0
结束的字符数组称为字符串,否则只能算作字符数组。只有以\0
结束的字符数组才能以%s
的方式用 printf 输出。
字符数组
索引 | 0 | 1 | 2 | 3 |
---|---|---|---|---|
字符 | a | b | c | d |
字符串
索引 | 0 | 1 | 2 | 3 | 4 |
---|---|---|---|---|---|
字符 | a | b | c | d | \0 |
2、c++¶
使用提供的string
类型。
char数组会比string更灵活
3、Java¶
使用提供的String
类表示。
Java中的String
是不能更改某一个位置上字符的值。
二、字符串操作库函数¶
1、C/C++¶
0)字符串的输入¶
scanf:遇到空格、回车、制表符就会中断输入
gets:遇到回车中断输入,但是不安全
fgets:遇到回车中断输入,但是会算入换行
1)字符串赋值¶
将b赋值给a
2)字符串拼接¶
将b拼接在a后面(a必须有足够的空间)
3)字符串比较¶
从第一个字符开始逐字符比较 ASCII 码,返回第一个不相同的ASCII码的差值,如果两个字符串完全相同,返回0。
4)字符串长度¶
字符串长度,不包括\0
时间复杂度O(n^2) => 先存值再跑循环
2、Java¶
1)字符串赋值¶
使用等号 =
赋值
2)字符串拼接¶
使用加号 +
拼接
3)字符串比较¶
Sting类的compareTo(String s)
方法
4)字符串获取单个字符¶
Sting类的charAt(int i)
方法
5)字符串查找¶
Sting类的indexOf(String s)
方法
三、代码¶
1、子串出现次数¶
/**
* 子串出现次数
* @author 王铭颢
* @Date 2022/11/20 15:52
*/
#include "cstdio"
#include "cstring"
char s1[5000];
char s2[50];
int ans;
int main() {
scanf("%s", s1);
scanf("%s", s2);
int slen1 = strlen(s1);
int slen2 = strlen(s2);
int flag;
for (int i = 0; i < slen1 - slen2; ++i) {
flag = 1;
for (int j = 0; j < slen2; ++j) {
if (s1[i + j] != s2[j]) {
flag = 0;
break;
}
}
if (flag) ans++;
}
printf("%d", ans);
return 0;
}
2、最后一个字符串¶
输出最后一个输入的字符串
判题会用文件重定向,输入末尾存在EOF
调试窗口使用 Ctrl + Z
结束输入