CMNSOFT
首页|算法设计|在线应用
02.字符串查找
作者:孙自超发布时间:2025-07-16 07:42:39

新知识


例1.字符串查找

有s1和s2两个字符串,假设s1="abdabca",s2="abc"。请编写程序,查找s1字符串中是否包含有s2字符串。

01.C语言字符串查找函数

在C语言里面有一个叫strstr函数,专门负责字符串查找处理。

char s1[]="abdabca"; char s2[]="abc"; char* ret = strstr(s1,s2); if(ret==NULL) cout<<"不包含"<<endl; else cout<<"包含"<<endl;
大家尝试把第9行代码替换成cout<<ret;看看程序会输出什么结果。

02.C++语言字符串查找函数

在C++里是用string类型来存储字符串的,而string本身就自带有常有的字符串操作命令。

string s1="abdabca"; string s2="abc"; int idx = s1.find(s2,0); if(idx<s1.size()) cout<<"包含"<<endl; else cout<<"不包含"<<endl;
find函数中第2个参数0,代表从s1的第0个元素开始查找;find函数的返回值是s2在s1的起始位置。大家可尝试把第7和第9行代码替换成cout<<idx;。看看会输出什么结果。

例2.字符串统计

有s1和s2两个字符串,假设s1="abdabcaabc",s2="abc"。请编写程序,统计s1字符串中有多少个s2字符串。我们先看下图。

次数abdabcaabc
1abc
2abc
3abc
4abc
5abc
6abc

从上图,大家可以看到统计字串次数的流程了。下面我们直接用C++来实现这个程序。

string s1="aabcdabca"; string s2="abc"; int pos=0; int n=0; while(pos<(s1.size()-s2.size())){ if(s1.find(s2,pos)<s1.size()){ n+=1; pos+=s2.size(); } else pos+=1; } cout<<n;
思考一下:如果s1="abcaaabdaaaa",s2="aa";。程序会出现什么结果?

课后练习


请尝试用C语言改写例2程序。


桂ICP备11003301号 桂公网安备45040302000027号
Copyright @ 2011-2025 by Sun zi chao
平台运行天数:266天
阅读次数:10810次
展开目录
+  01.基础知识

01.算法是什么?

02.编程语言介绍

03.编程基础

04.控制结构-1

05.控制结构-2

06.控制结构-3

07.函数的使用

+  02.数值运算

01.取整与取模

02.寻找因数

03.寻找完全数

04.求最大公约数

05.求最小公倍数

06.斐波那契数列

07.数列求和1

08.数列求和2

+  03.字符串运算

01.字符和字符串

02.字符串查找

+  04.搜索算法
+  05.排序算法
+  06.分治算法
+  07.回溯算法
+  08.动态规划
+  09.贪心算法
+  10.遗传算法

同步视频