请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“a

请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“abcabcbbced”,删除后字符串为“abced”,其中a、b、c、d... 请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“abcabcbbced”,删除后字符串为“abced”,其中a、b、c、d字符的个数分别为2,4,3,1,1。 展开
 我来答
splashchaos
推荐于2017-09-19 · TA获得超过1.1万个赞
知道大有可为答主
回答量:3342
采纳率:0%
帮助的人:3660万
展开全部

确定是c++? STL string+unique+count,可以很容易解决:

#include <iostream>
#include <string>
#include <algorithm>

using namespace std;

int main(int argc, char const *argv[])
{
    string str = "abcabcbbced";
    string ustr(str);
    
    sort(ustr.begin(), ustr.end());
    ustr.erase(unique(ustr.begin(), ustr.end()), ustr.end() );
    cout << ustr << endl;
    for (string::iterator it=ustr.begin(); it != ustr.end(); ++it)
        cout << *it << " " << count(str.begin(), str.end(), *it) << endl;
    
    return 0;
}

运行:

a 2
b 4
c 3
d 1
e 1
寒寒家
2014-12-31 · TA获得超过2920个赞
知道大有可为答主
回答量:1482
采纳率:100%
帮助的人:1981万
展开全部
//刚写的code,测试通过,如果有疑问,欢迎交流
//思路:用map保存每个字符出现的次数
#include<iostream>
#include<map>
using namespace std;

int main(){
char str[100];
gets(str);
int cur_idx = 0;
int cur_next = 0;
map<char, int> char_counts;
while(str[cur_idx] != '\0'){
        //判断当前字符,是否出现过
if(char_counts.count(str[cur_idx]) == 0){
char_counts[str[cur_idx]] = 1;
str[cur_next] = str[cur_idx];
cur_next++;
cur_idx++;
}else{
char_counts[str[cur_idx]]++;
cur_idx++;
}
}
str[cur_next] = '\0';
puts(str);
map<char, int>::iterator cur_it = char_counts.begin();
for(;cur_it!=char_counts.end();cur_it++){
cout<<cur_it->first<<":"<<cur_it->second<<endl;
}
return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
Metaphor90
2014-12-31 · TA获得超过202个赞
知道小有建树答主
回答量:146
采纳率:0%
帮助的人:131万
展开全部

代码如下:

#include <string>
#include <vector>
#include <iostream>
using namespace std;

int main()
{
string result;
vector<int> numList;

string str = "abcabcbbced";
for (size_t i = 0; i < str.size(); ++i)
{
char c = str[i];
int index = result.find(c);
if (index == string::npos)
{
result += c;
numList.push_back(1);
}
else
++numList[index];
}

cout << result << endl;
for (size_t i = 0; i < result.size(); ++i)
cout << result[i] << "\t" << numList[i] << endl;

return 0;
}
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式