HJ23 删除字符串中出现次数最少的字符【牛客网】
文章目录
- 零、原题链接
- 一、题目描述
- 二、测试用例
- 三、解题思路
- 四、参考代码
零、原题链接
HJ23 删除字符串中出现次数最少的字符
一、题目描述
二、测试用例
三、解题思路
- 基本思路:
先找到最少字符的数量,然后删除最少数量的字符即可; - 具体思路:
- 先统计每个字符的数量;
- 遍历字符数量,寻找最小值;
- 输出字符,如果该字符的数量和最小值相同,则不输出;
四、参考代码
时间复杂度: O ( n ) \Omicron(n) O(n)【n 表示字符串长度】
空间复杂度: O ( 1 ) \Omicron(1) O(1)【map 表的空间是常数级】
#include <iostream>
using namespace std;int main() {int c[26] = {0};string str;cin >> str;for (int i = 0; i < str.length(); i++) {c[str[i] - 'a']++;}int _min = 1e5;for (int i = 0; i < 26; i++) {if (c[i] == 0)continue;_min = min(_min, c[i]);}for (int i = 0; i < str.length(); i++) {if (c[str[i] - 'a'] != _min) {cout << str[i];}}
}
// 64 位输出请用 printf("%lld")