题目描述:
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
题目类别: 字符串
难度: 中级
运行时间限制: 10Sec
内存限制: 128MByte
输入:
字符串只包含小写英文字母,不考虑非法输入,输入的字符串长度小于等于20个字节。
输出:
删除字符串中出现次数最少的字符后的字符串。
样例输入: abcdd
样例输出: dd
代码:#include <iostream>
#define MAX 20
using namespace std;
void Del_Min_Char(const char* input, int len, char* output)
{
int i = 0, count = 0;
while (input[i] != '\0')
{
count++;
i++;
}
char freq[26] = { 0 };
for (i = 0; i < count; i++)
{
freq[input[i] - 'a']++;
}
int min = len;
for (i = 0; i < 26; i++)
{
if (freq[i] < min&&freq[i] != 0)
min = freq[i];
}
int j = 0;
for (i = 0; i < count; i++)
{
if (freq[input[i] - 'a'] != min)
{
output[j] = input[i];
j++;
}
}
output[j] = '\0';
}
int main()
{
char input[MAX],output[MAX];
char temp = getchar();
int i = 0;
while (temp != '\n')
{
input[i] = temp;
i++;
temp = getchar();
}
input[i] = '\0';
Del_Min_Char(input, MAX, output);
cout << output << endl;
cin.get();
return 0;
}