题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
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; }