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;
}