问题标题: 酷町堂:4433

0
0
已解决
童晨睿
童晨睿
新手守护
新手守护

4433   字符串查找

题目描述 Description

现在有一个字符串s,请你编写一个程序,查找另一个字符串a在s中出现的次数

输入描述 Input Description

两行,第一行一个字符串s,由小写字母组成
第二行一个字符串a,由小写字母组成

输出描述 Output Description

一个整数n,表示a在s中出现的次数

样例输入 Sample Input

 

sjadjifgdnlkg
gdn

样例输出 Sample Output

 

1


1
已采纳
舒航
舒航
新手守护
新手守护

这题要用到find函数

说到find函数,先介绍一下它的用法:

泛型算法的 find

在非string类型的容器里,可以直接找出所对应的元素.find函数需要几个参数:迭代器,下标值,所要找的元素

vector<int> a;

find(a.begin(),a.end(),1);

这句话就表示从a的头开始一直到尾,找到第一个值为1的元素,返回的是一个指向该元素的迭代器。

find在string容器中用途比较广

find_first_of,find_last_of,find_not_first_of,find_not_last_of等等

在string类型中,需要的参数也有迭代器,下标和要找的字符串,可以查找单个的字符。因为最后一个参数是const char & _Val(头文件algorithm的定义)

string a;find(a.begin(),a.end(),'a')这句话就是说,在a中找到第一个存在子串与'a'子串相等的字符串的首地址。返回指向该字符串首地址的迭代器(下一次迭代将会接着上一次的迭代,这样很容易做出一个计算字符串中某个字符的出现次数,如右图所示)。

find_last_of则是找到最后一个,

find_not_first_of是找出第一个不与"asd"相等的字符串的首地址

 

然后,这道题比较水:

认真看!!!!!!!!!!!!!!!!!!!!!!!!!!!1

char a[80];
char b[80];
char *p = a;//辅助变量p(指针)
int count = 0;//用来记录子串出现的次数
printf("请输入主字符串:");
gets(a);
printf("请输入要查找的子串:");
gets(b);
while((p = strstr(p,b)) != NULL)
{
count ++;
p++;
}
printf("子串出现的次数为%d次\n",count);

 

我没用find,我使用程序模拟find函数,你可以参考一下,切记不要抄袭!

你自己用find函数写一遍吧!

0
我要回答