给定一个字符串,统计每一个字母的出现次数
比如aabbccc,打印出来就是a_2_b_2_c_3
思路还是采取遍历,注意这几个题的思路都比较类似
要注意这里的sstream 这里的clear()并非清空了缓冲区,而只是重置标志,如果要重置缓冲区,则应为ss.str(“”)
#include <iostream>
#include <string>
using namespace std;
void CalNumberOfLetter(string str)
{
int num=1;
stringstream ss;
string end="";
string record="";
record=str[0];
string add="";
for(int i=1;i<str.length();i++)
{
if(str[i]==str[i-1])
{
num++;
}
else
{
ss.clear();
ss<<num;
ss>>add;
end+=record+"_"+add+"_";
record=str[i];
num=1;
}
}
ss.clear();
ss<<num;
ss>>add;
end+=record+"_"+add;
cout<<end<<endl;
}
int main()
{
string test="aabbcccddddeeeee";
CalNumberOfLetter(test);
return 0;
}