题解 | #删除字符串中出现次数最少的字符#
删除字符串中出现次数最少的字符
https://www.nowcoder.com/practice/05182d328eb848dda7fdd5e029a56da9
#include <iostream> using namespace std; int main() { string str; cin >> str; int cnt = 0; int cnt_arr[26] = {0}; int cnt_arr_cnt[26] = {0}; for (int i = 0; i < str.size(); i++) { if (cnt_arr[str[i] - 'a'] == 1) { //当前字符是否遍历过了 continue; } else { cnt_arr[str[i] - 'a'] = 1; for (int j = 0; j < str.size(); j++) { if (str[i] == str[j]) { cnt++; } } cnt_arr_cnt[str[i] - 'a'] = cnt; //统计所有字符中的个数 cnt = 0; } } //1先找出最小的数量minn //2在将所有数量等于minn字符都删除 int minn =0; for(int i=0; i<26; i++){ if(cnt_arr_cnt[i] >0){ minn = cnt_arr_cnt[i]; break; } } for (int i = 0; i < 26; i++) { // cout << cnt_arr_cnt[i] << endl; if(cnt_arr_cnt[i] >0){ if(cnt_arr_cnt[i]<minn){ minn = cnt_arr_cnt[i]; } } } for(int i=0 ;i<str.size() ; ){ if( cnt_arr_cnt[str[i] - 'a'] == minn){ //如果该字符是字符串中数量最少的字符,就删除它 str.erase(i, 1); }else{ i++; } } cout<<str<<endl; return 0; } // 64 位输出请用 printf("%lld")#那么复杂的题目怎么放在简单题目里?#