题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
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;
}
查看10道真题和解析
