您的位置:首页 > 其它

hdu1860-统计字符出现次数问题 string.find()

2016-07-21 09:50 471 查看
1860

Sample Input

I

THIS IS A TEST

i ng

this is a long test string

#

Sample Output

I 2

i 3

5

n 2

g 2

注:第2个测试用例中,空格也是被统计的字符之一。

string 类提供了 6 种查找函数,每种函数以不同形式的 find 命名。 这些操作全都返回 string::size_type

类型的值,以下标形式标记查找匹配所发生的位置; 或者返回一个名为 string::npos 的特殊值,说明查找没有匹配。string 类将

npos 定义为保证大于任何有效下标的值。

#include <iostream>
#include<string>
using namespace std;
int main()
{
string str1,str2;
int sum,j;
while (getline(cin,str1) && str1!="#")
{
getline(cin,str2);
for (int i = 0; i < str1.length(); i++)
{
sum = 0;
j = 0;
while(str2.find(str1[i],j)!=string::npos)    //从j开始找,直到在str2找到一个str1[i]便返回str1[i]在str2中的位置,不再继续
{
sum++;
j = str2.find(str1[i],j)+1; //若此处j++,假设输入abcdef检测e的次数时,则在j到达e所在的位置前e已经被统计了5次了
}
cout<<str1[i]<<" "<<sum<<endl;
}

}
return 0;
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  string