华为机试:删除字符串中出现次数最少的字符

#include <iostream>
#include <map>
#include <vector>
#include <algorithm>
using namespace std;

bool cmp (pair<char, int> a, pair<char, int> b) {
    return a.second < b.second;
}

int main() {
    // int a, b;
    // while (cin >> a >> b) { // 注意 while 处理多个 case
    //     cout << a + b << endl;
    // }
    string str;
    cin >> str;
    map<char, int> m;
    for (char ch : str) {
        if (m.find(ch) != m.end()) {
            m[ch] += 1;
        }
        else {
            m.insert(make_pair(ch, 1));
        }
    }
  
    vector<pair<char, int>> v;
    for (auto it = m.begin(); it != m.end(); it++) {
        v.push_back(pair<char, int>(it->first, it->second));
    }
    sort(v.begin(), v.end(), cmp);
    string less;
    less.push_back(v[0].first);
    for (int i = 1; i < v.size(); i++) {
        if (v[i].second == v[0].second) {
            less.push_back(v[i].first);
        }
    }
  
    string ans;
    for (char ch : str) {
        bool flag = false;
        for (char c : less) {
            if (ch == c) {
                flag = true;
                break;
            }
        }
        if (!flag) {
            ans.push_back(ch);
        }
    }
  
    cout << ans << endl;
    return 0;
    //感觉越写越麻烦了
}

全部评论

相关推荐

点赞 评论 收藏
分享
喜欢核冬天的哈基米很想上市:会爆NullPointerException的
点赞 评论 收藏
分享
评论
1
7
分享

创作者周榜

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