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

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

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

#include <iostream>
#include<string>
#include<vector>
using namespace std;

int main() {
    string str;
    int num[26]={0};
    cin>>str;
    vector<char> strMin;
    for(int i=0;i<str.size();i++){  //字符计数
        num[str[i]-'a']++;
    }
    for(int i=0;i<26;i++){  //将未出现的字符设置为大于最多字符数的值,便于排除
        if(num[i]==0){
            num[i]=100;
        }
    }
    int min=100;
    for(int i=0;i<26;i++){  //寻找出现次数最少的字符,并加入到strMin
        if(min>num[i]){
            min=num[i];
            strMin.clear();    //如果有比min值更小的,那么将strMin清空,再加入其最小值对应的字符
            strMin.push_back(char(i+'a'));
        }
        else if(min==num[i]){
            strMin.push_back(char(i+'a'));
        }
    }
    //不输出出现次数最少的字符
    bool outFlag=1;
    for(int i=0;i<str.size();i++){
        outFlag=1;
        for(int j=0;j<strMin.size();j++){
            if(str[i]==strMin[j]){
                outFlag=0;
                break;
            }
        }
        if(outFlag) cout<<str[i];
    }
    return 0;
}


全部评论

相关推荐

评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务