【华为OJ23】删除字符串中出现次数最少的字符
2016-10-06 00:48
399 查看
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
输入例子:
abcdd
输出例子:
dd
import java.util.*;
public class Main{
public static void main(String[] args){
Scanner sc= new Scanner(System.in);
while(sc.hasNext()){
String str = sc.next();
System.out.println(getStr(str));
}
sc.close();
}
public static String getStr(String str){
if(str == null)
return str;
Map<Character,Integer> map = new HashMap<>();
//1 存储字符,统计每个字符出现的次数
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
if(map.containsKey(c)){
map.put(c,map.get(c)+1);
}else{
map.put(c,1);
}
}
//2 遍历集合,获取出现次数最少的字符
int min = Integer.MAX_VALUE;
for(Map.Entry<Character,Integer> entry:map.entrySet()){
Integer value = entry.getValue();
if(value < min)
min = value;
}
//3 添加出现次数最少的字符
Set<Character> set = new HashSet<>();
for(Map.Entry<Character,Integer> entry:map.entrySet()){
Character c = entry.getKey();
Integer value = entry.getValue();
if(value == min)
set.add(c);
}
//4 从原字符串中删除次数最少的字符
StringBuilder sb = new StringBuilder(128);
for(int i=0;i<str.length();i++){
char c = str.charAt(i);
//set可以添加,说明此字符c不是出现次数最少的字符
if(!set.contains(c)){
sb.append(c);
}
}
return sb.toString();
}
}
相关文章推荐
- 华为OJ删除字符串中出现次数最少的字符
- 华为OJ(删除字符串中出现次数最少的字符)
- 华为OJ——删除字符串中出现次数最少的字符
- 【华为OJ】删除一个字符串中出现次数最少的字符
- 【华为 OJ 】删除字符串中出现次数最少的字符
- 华为oj 删除字符串中出现次数最少的字符
- 华为OJ——删除字符串中出现次数最少的字符
- 华为 oj 简单密码破解&&汽水瓶&&删除字符串中出现次数最少的字符&&字符串排序
- 【华为OJ】删除字符串中出现次数最少的字符
- 华为OJ 删除字符串中出现次数最少的字符
- 华为oj 删除字符串中出现次数最少的字符
- 【华为OJ】【022-删除字符串中出现次数最少的字符】
- 华为OJ中级题-删除字符串中出现次数最少的字符
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- Java - 华为机试训练 - 删除字符串中出现次数最少的字符
- [华为]删除字符串中出现次数最少的字符
- 华为机试-删除字符串中出现最少次数的字符
- [华为上机练习题]7.删除字符串中出现次数最少的字符
- 华为机试题:删除字符串中出现次数最少的字符
- 华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符