题解 | #[C++]删除字符串中出现次数最少的字符#

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

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

  1. 首先,采用unordered_map来存储这样一个统计信息,其中key为字符,value为该字符出现的序列。
  2. 第二部,先是一个循环,每次迭代寻找次数为MinTimes的字符并将原串中置换为空格,没有最小次数为MinTimes的字符,则MinTimes加1往下循环。当当前次数的所有字符都替换为空格后,再统一将其删除,这样就得到了最终的字符串了。
#include<iostream>
#include<unordered_map>
#include<vector>
using namespace std;

int main()
{
    string s;
    while ( cin >> s ){
        unordered_map<char, vector<int>> m;
        int MinTimes = 1;
        bool Del_flag = false;
        // 遍历一遍s统计数量,并记录下
        for (int i = 0; i< s.length(); i++){
            if (!m.count(s[i])){
                m[s[i]] =  {i};
            }
            else{
                m[s[i]].push_back(i);
            }
        }
        while(MinTimes <= s.length()){
            for(auto & it : m){
                if (it.second.si***Times){
                    Del_flag = true;
                    for (int i : it.second){
                        s[i]=' ';
                    }

                }
            }
            if (!Del_flag){
                MinTimes ++;
            }
            else{
                int loc;
                while((loc = s.find(' ')) != string::npos){
                    s.erase(loc, 1);
                }
                break;
            }
        }
        cout << s <<endl;
    }
    return 0;
}
全部评论

相关推荐

恰好,我就是有一个弟弟。这样的关注让我感到有些无奈,难道这和我的能力、经验有什么关系吗?求职的路上,真是充满了各种奇怪的考量,让我很想吐槽。希望未来的招聘能更关注求职者的专业素养,而不是这些无关紧要的个人信息。
热血的蚊不叮追赶太阳:找工作,你就是牛马,牛马是否便宜,是否好压迫,女的牛马生不生孩子,男的牛马有没有房贷,一切都是试探你是否好压榨,所以真的我看你是汽车行业的,可以去外企博世,舍弗勒,索恩格,大陆。。。各种外企的供应链 甚至麦当劳苹果店长这些我感觉都把人当人看
点赞 评论 收藏
分享
评论
点赞
收藏
分享
牛客网
牛客企业服务