[华为上机练习题]7.删除字符串中出现次数最少的字符

题目

描写叙述:
实现删除字符串中出现次数最少的字符。若多个字符出现次数一样,则都删除。

输出删除这些单词后的字符串。字符串中其他字符保持原来的顺序。

题目类别: 字符串
难度: 中级
执行时间限制: 10Sec
内存限制: 128MByte
阶段: 入职前练习
输入:
字符串仅仅包括小写英文字母, 不考虑非法输入。输入的字符串长度小于等于20个字节。

输出:
删除字符串中出现次数最少的字符后的字符串。

例子输入:
abcdd

例子输出:
dd

代码

/*---------------------------------------
*   日期:2015-06-29
*   作者:SJF0115
*   时间:2014
*   题目:删除字符串中出现次数最少的字符
*   来源:华为上机
-----------------------------------------*/
#include <iostream>
#include <climits>
#include <string>
using namespace std;
// 不考虑非法输入
string DeleteMinChar(string str){
    string result = "";
    int size = str.size();
    if(size == 0){
        return result;
    }//if
    // 统计个数
    int hash[256] = {0};
    for(int i = 0;i < size;++i){
        ++hash[str[i]];
    }//for
    // 最小出现次数
    int Min = INT_MAX;
    for(int i = 0;i < size;++i){
        if(Min > hash[str[i]]){
            Min = hash[str[i]];
        }//if
    }//for
    // 删除最小出现次数
    for(int i = 0;i < size;++i){
        if(Min != hash[str[i]]){
            result += str[i];
        }//if
    }
    return result;
}

int main(){
    string str;
    //freopen("C:\Users\Administrator\Desktop\c++.txt","r",stdin);
    while(cin>>str){
        cout<<DeleteMinChar(str)<<endl;
    }//while
    return 0;
}
原文地址:https://www.cnblogs.com/mfmdaoyou/p/6904969.html