[华为上机练习题]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;
}
目录
相关文章
|
6月前
|
C语言
【Leetcode-1638.统计只差一个字符的字串数目(C语言)】
【Leetcode-1638.统计只差一个字符的字串数目(C语言)】
20 0
|
5月前
|
算法 索引
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
代码随想录算法训练营第九天 | LeetCode 8. 找出字符串中第一个匹配项的下标、LeetCode 459. 重复的子字符串
16 0
|
8月前
|
算法 测试技术
算法强化每日一题--字符串中找出连续最长的数字串
算法强化每日一题--字符串中找出连续最长的数字串
|
11月前
|
算法 C++ Python
每日算法系列【LeetCode 424】替换后的最长重复字符
每日算法系列【LeetCode 424】替换后的最长重复字符
LeetCode每日一题-9:替换后的最长重复字符串
LeetCode每日一题-9:替换后的最长重复字符串
|
存储
第一个只出现一次的字符(简单难度)
第一个只出现一次的字符(简单难度)
41 0
第一个只出现一次的字符(简单难度)
|
C语言
每日一题断更一天(补上):1063统计字符
题目描述: 输入一行字符,分别统计出其中英文字母、空格、数字和其它字符的个数。 输入: 无
49 0