题目
题目描述:
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。
输入描述:
字符串只包含小写英文字母一,不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
示例1:
输入例子:
abcdd
输出例子:
dd
思路
统计每个字符出现的次数,得到最小次数
再遍历s,如果其出现的次数等于最小次数,那么删除该字符即可
题解
package hwod;
import java.util.*;
public class DelStrLittleChar {
public static void main(String[] args) {
Scanner sc = new Scanner(System.in);
final String s = sc.nextLine();
System.out.println(delStrLittleChar(s));
}
private static String delStrLittleChar(String s) {
int[] freq = new int[26];
for (int i = 0; i < s.length(); i++) {
int key = s.charAt(i) - 'a';
freq[key]++;
}
int min = 0;//记录最小位置的索引
for (int i = 1; i < freq.length; i++) {
if (freq[i] != 0 && freq[i] < freq[min]) min = i;
}
StringBuilder sb = new StringBuilder();
for (int i = 0; i < s.length(); i++) {
if (freq[s.charAt(i) - 'a'] == freq[min]) continue;
sb.append(s.charAt(i));
}
return sb.toString();
}
}
推荐
如果你对本系列的其他题目感兴趣,可以参考华为OD机试真题及题解(JAVA),查看当前专栏更新的所有题目。
说明
本专栏所有文章均为原创,欢迎转载,请注明文章出处:https://blog.csdn.net/qq_31076523/article/details/134176793。百度和各类采集站皆不可信,搜索请谨慎鉴别。技术类文章一般都有时效性,本人习惯不定期对自己的博文进行修正和更新,因此请访问出处以查看本文的最新版本。