请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“a
请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“abcabcbbced”,删除后字符串为“abced”,其中a、b、c、d...
请用C++编写一个程序实现删除字符串中重复的字符,并分别统计,重复的字符个数。例如:原字符串为“abcabcbbced”,删除后字符串为“abced”,其中a、b、c、d字符的个数分别为2,4,3,1,1。
展开
3个回答
展开全部
确定是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
展开全部
//刚写的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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
代码如下:
#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;
}
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询