题解 | #删除字符串中出现次数最少的字符#按部就班实现

删除字符串中出现次数最少的字符

https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9

#include <iostream>
#include <unordered_map>
#include <vector>
#include <algorithm>
using namespace std;
void RemoveLeastFrequentChars(string input) {
  //定义一个map,来记录每种字符对应的个数
    unordered_map<char, int> charCount;
    string result;
  //声明最小出现次数,设置其初始值为输入字符串的长度(这是可能的最大的值)
    int minCount = input.size();
	//遍历输入字符串,将字符跟个数记录下来
    for (char ch : input) {
        charCount[ch] = charCount[ch] + 1;//当赋值给ch值的时候,对应的int默认为0
    }
	//遍历map,求出最小出现次数
    for (auto pair : charCount) {
        if (pair.second < minCount) {
            minCount = pair.second;
        }
    }
	//声明一个vector
    vector<char> leastFrequentChars;
  //遍历map,根据minCount,将对应的char压入vector
    for (auto pair : charCount) {
        if (pair.second == minCount) {
            leastFrequentChars.push_back(pair.first);
        }
    }
	//遍历输入字符串
    for (char ch : input) {
	  //如果没有找到最小次数对应的char,就将其压入result字符串
        if (find(leastFrequentChars.begin(), leastFrequentChars.end(),
                 ch) == leastFrequentChars.end()) {
            result.push_back(ch);
        }
    }
//遍历result字符串,即可得到答案
    for (char ch : result) {
        cout << ch;
    }
}
int main() {
    string str;
    cin >> str;
    RemoveLeastFrequentChars(str);

    return 0;
}
 

全部评论

相关推荐

点赞 评论 收藏
分享
头像
昨天 14:18
已编辑
美团_后端开发(实习员工)
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务