社区
C++ 语言
帖子详情
怎么查找一个string 字符串中的子字符串出现的次数和位置?
NewCenturyNewPage
2004-10-14 10:15:01
已知:string s="HelloABCmyc++ABCOKC++ABC";
现在要查找该字符串s的子字符串ABC出现的次数和位置,怎么查找最简捷?
...全文
4091
13
打赏
收藏
怎么查找一个string 字符串中的子字符串出现的次数和位置?
已知:string s="HelloABCmyc++ABCOKC++ABC"; 现在要查找该字符串s的子字符串ABC出现的次数和位置,怎么查找最简捷?
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
13 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
NewCenturyNewPage
2004-10-14
打赏
举报
回复
demo001(给分是我最大的快乐)
----------------------------
是的,是3个,我看错了,上面已经说了,呵呵。
demo001
2004-10-14
打赏
举报
回复
sh: Pause: command not found
是Unix下不支持Pause屏幕输出命令
demo001
2004-10-14
打赏
举报
回复
最后的3是总个数啊
楼主
你不看我程序的啊?
whoho
2004-10-14
打赏
举报
回复
不会的
string::find的效率很高,你可以尝试去看它代码
如果你使用的stl版本比较次,可以去看SGI的代码
在这个基础上,你统计次数的效率,几乎无可挑剔了
不管如何实现计数,至少将整个串前前后后匹配一遍都是必须的
find实现了无回溯匹配,所以效率自然不会差
你上面的代码有问题,你去看看msdn,string::find有多种版本
你去找提供带offset参数的版本,这样就不用求子串了
NewCenturyNewPage
2004-10-14
打赏
举报
回复
whoho(在北方流浪)
我只知道用find的时候每次要对字符串求子串substr,这样是不是效率不高?
i = s.find("ABC");
while(i>0)
{
s= s.substr(i,s.length()-i);
n++;
i = s.find("ABC");
}
whoho
2004-10-14
打赏
举报
回复
对子串好像也有一个相应的重载版本,查一下就知道了
或者,你可以用string::find,每次提供一个不同的offset即可
NewCenturyNewPage
2004-10-14
打赏
举报
回复
呵呵,看错了,不好意思,sorry,你最后的一个打印出来的是出现的次数。
结贴!
whoho
2004-10-14
打赏
举报
回复
标准库中有一个count算法:
string str = "aaaddea";
cout << count(str.begin(), str.end(), 'a') << "a's";
NewCenturyNewPage
2004-10-14
打赏
举报
回复
demo001(给分是我最大的快乐)
不对哦,运行结果:
5
13
21
3
sh: Pause: command not found
最后怎么多了一个3?
demo001
2004-10-14
打赏
举报
回复
#include <iostream>
#include <string>
using namespace std;
int main(int argc, char* argv[])
{
int intCount=0;
unsigned int loc=0;
string s="HelloABCmyc++ABCOKC++ABC";
while((loc=s.find( "ABC", loc ))!=string::npos)
{
intCount++;
cout << loc++ << endl;
}
cout << intCount << endl;
system("Pause");
return 0;
}
wxwxiaofeng
2004-10-14
打赏
举报
回复
用strstr()可以判断字符串中是否有指定的字符串
NewCenturyNewPage
2004-10-14
打赏
举报
回复
while(s.rfind("ABC")>0)
nCount++;
kobefly
2004-10-14
打赏
举报
回复
没有直接实现你所要求功能的函数
要自己写
查找的话
KMP算法
可以考虑
C++
中
string
字符串
查找
某一
子
字符串
所有
出现
过的
位置
,并计数
C++
中
string
字符串
查找
某一
子
字符串
所有
出现
过的
位置
,并计数 (可用于招聘软件笔试题
中
的应用) 直接上示例代码: #include <iostream> #include <
string
> using namespace std; int main() { ...
JAVA获取
一个
字符串
在另
一个
字符串
中
出现
的
次数
JAVA语言获取
一个
字符串
在另
一个
字符串
中
出现
的
次数
java语言编程实现
一个
短的
字符串
在另
一个
长的
字符串
中
出现
的
次数
,这个比较简单,主要使用java
字符串
的indexOf()方法,代码: 首先定义两个
字符串
并获取它们的...
Python用于统计
字符串
里某个字符
出现
的
次数
count()函数
Python
中
的count()函数。 描述: 用于统计
字符串
里某个字符
出现
的
次数
。可选参数为在
字符串
搜索的开始与结束
位置
。 ...该方法返回
子
字符串
在
字符串
中
出现
的
次数
。 程序实例: 默认搜索整个
字符串
s
在
字符串
中
查找
指定
子
串
出现
的
次数
+在
字符串
中
查找
指定字符
出现
的
次数
【代码】在
字符串
中
查找
指定
子
串
出现
的
次数
+在
字符串
中
查找
指定字符
出现
的
次数
。
查询
字符串
中
某一
字符串
出现
次数
输入一段
字符串
,然后在输入一串想
子
字符串
,运行代码会找出
字符串
中
子
串的
次数
。 例如:输入母串dsfsdsv,
子
串d 得到答案2次 //输入一段
字符串
,然后在输入一串想
子
字符串
,运行代码会找出
字符串
中
子
串的
次数
#...
C++ 语言
64,654
社区成员
250,484
社区内容
发帖
与我相关
我的任务
C++ 语言
C++ 语言相关问题讨论,技术干货分享,前沿动态等
复制链接
扫一扫
分享
社区描述
C++ 语言相关问题讨论,技术干货分享,前沿动态等
c++
技术论坛(原bbs)
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
请不要发布与C++技术无关的贴子
请不要发布与技术无关的招聘、广告的帖子
请尽可能的描述清楚你的问题,如果涉及到代码请尽可能的格式化一下
试试用AI创作助手写篇文章吧
+ 用AI写文章