C++,输入字符串,删除重复次数最多的字符

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
#include <string>
#include <cstring>
using namespace std;
typedef map<char,int> fMap;

//从原始数据中,获取包含字母出现次数的map
int getMap(vector<char> cVec, fMap &mapList)
{
	vector<char>::const_iterator cIter = cVec.begin();

	for (cIter; cIter != cVec.end(); ++cIter) {
		mapList[*cIter]++;
	}

	return 0;
}

//从map中获取出现次数最多的字符
int getMaxChar(vector<char> &getMaxCharVec, fMap &mapList)
{
	fMap::iterator mIter = mapList.begin();
	fMap::iterator tmpIter = mapList.begin();

	while (mIter != mapList.end()) {
		if (tmpIter->second >= mIter->second) {
			++mIter;
		} else {
			tmpIter = mIter;
			++mIter;
		}  
	}

	for (mIter = mapList.begin(); mIter != mapList.end(); ++mIter) {
		if (tmpIter->second == mIter->second) {
			getMaxCharVec.push_back(mIter->first);
		}
	}

	return 0;
}

//获取需要打印的字符串
int deleteMaxChar(vector<char>&cVec, vector<char> getMaxCharVec, vector<char>&outVec)
{

	vector<char>::const_iterator tIter = cVec.begin();
	for (tIter; tIter != cVec.end(); ++tIter) {
		bool pd = true;
		vector<char>::const_iterator maxIter = getMaxCharVec.begin();
		for (maxIter; maxIter != getMaxCharVec.end(); ++maxIter){
			if (*tIter == *maxIter) {
				pd = false;
				break;
			}
		}

		if (pd) {
			outVec.push_back(*tIter);
		}
	}

	return 0;
}


int _tmain(int argc, _TCHAR* argv[])
{
	string s1;
	vector<char> cVec,getMaxCharVec,outVec;
	fMap mapList;

	cin>>s1;
	if(s1.size() > 20){
		cout<<"The length of input string is too long!"<<endl;
		return -1;
	}

	std::string::const_iterator sIter = s1.begin();
	for (sIter; sIter != s1.end(); ++sIter) {
		cVec.push_back(*sIter);
	}

	getMap(cVec,mapList);
	getMaxChar(getMaxCharVec,mapList);
	deleteMaxChar(cVec,getMaxCharVec,outVec);

	cout<<"The process finished is:";
	vector<char>::const_iterator iterB = outVec.begin();
	for (iterB; iterB != outVec.end(); ++iterB){
		cout<<*iterB;
	}
	cout<<endl;

	return 0;
}

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 要统计一个字符串中出现次数最多字符,可以利用一个字典来记录每个字符出现的次数。首先,遍历字符串的每个字符,将字符作为字典的key,出现的次数作为value。如果字符已经在字典中,就将其对应的value加1;如果字符不在字典中,就将其加入字典并设置初始value为1。遍历完成后,再次遍历字典,找到出现次数最多字符。可以定义一个变量max_count来记录出现的最大次数,默认为0,再定义一个变量max_char来记录出现次数最多字符遍历字典时,如果某个字符的出现次数大于max_count,就将max_count更新为该字符的出现次数,并将max_char更新为该字符。最后,返回max_char即可。 例如,给定字符串"abcaabbbbccd",遍历字符串得到字典{'a': 3, 'b': 5, 'c': 3, 'd': 1}。再次遍历字典时,发现'b'出现的次数最多,为5次,因此返回'b'。 这样,就能找出字符串中出现次数最多字符了。 需要注意的是,这个方法只适用于统计ASCII字符,对于Unicode字符,需要使用其他方法。 ### 回答2: 如果要统计一个字符串中出现次数最多字符,可以使用字典来实现。首先,创建一个空的字典用于存储字符和它们的出现次数。然后,遍历字符串的每个字符,如果该字符在字典中存在,则将它的值加1;如果不存在,则将该字符作为键,并将它的值初始化为1。遍历字符串后,再遍历字典,找出值最大的键即为出现次数最多字符。最后,返回该字符即可。 下面是一个示例代码: ```python def count_most_frequent(string): char_count = {} for char in string: if char in char_count: char_count[char] += 1 else: char_count[char] = 1 max_count = 0 most_frequent_char = "" for char, count in char_count.items(): if count > max_count: max_count = count most_frequent_char = char return most_frequent_char string = "abbcdeeffggg" most_frequent = count_most_frequent(string) print("出现次数最多字符是:" + most_frequent) ``` 以上代码将输出: ``` 出现次数最多字符是:g ``` 这样就统计出了字符串中出现次数最多字符。 ### 回答3: 要统计一个字符串出现的次数最多,可以使用字典来记录每个字符出现的次数。首先,创建一个空的字典。然后,遍历字符串中的每个字符,将字符作为键,在字典中查找对应的值,如果存在,则将值加1,如果不存在,则将字符作为键,值设置为1。遍历完成后,字典中每个键对应的值就是对应的字符字符串中出现的次数。最后,找到字典中值最大的键,即为出现次数最多字符。 下面是一个示例代码: ```python def find_most_common_char(s): char_count = {} for char in s: if char in char_count: char_count[char] += 1 else: char_count[char] = 1 max_count = 0 most_common_char = "" for char, count in char_count.items(): if count > max_count: max_count = count most_common_char = char return most_common_char # 测试代码 s = "abcaabbbbcc" most_common_char = find_most_common_char(s) print("出现次数最多字符:", most_common_char) ``` 以上代码的输出将为: ``` 出现次数最多字符: b ``` 在上述示例代码中,我们将字符串 "abcaabbbbcc" 中的字符统计到字典 `char_count` 中,并找到值最大的键,即为出现次数最多字符
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值