实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。
2016-12-26 20:21
507 查看
题目描述
实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。输出删除这些单词后的字符串,字符串中其它字符保持原来的顺序。输入描述:
字符串只包含小写英文字母, 不考虑非法输入,输入的字符串长度小于等于20个字节。
输出描述:
删除字符串中出现次数最少的字符后的字符串。
输入例子:
abcdd
输出例子:
dd
import java.util.ArrayList; import java.util.Map; import java.util.Scanner; import java.util.TreeMap; public class Main { public static void main(String[] args) { Scanner sc = new Scanner(System.in); while(sc.hasNext()){ String str = sc.nextLine(); char[] ch = str.toCharArray(); Map<Character,Integer> map = new TreeMap<>(); //遍历字符数组,统计每个字符出现的次数并存放在Map中(key:字符;value:出现次数)。 for (int i = 0; i < ch.length; i++) { Integer freq = map.get(ch[i]); map.put(ch[i], (freq==null)?1:freq+1); } int number = Integer.MAX_VALUE; //list存放出现次数最少的字符 ArrayList<Character> list = new ArrayList<>(); //找出出现最少的字符 for (int i = 0; i < ch.length; i++) { if(map.get(ch[i]) < number){ number = map.get(ch[i]); list.clear(); list.add(ch[i]); }else if(map.get(ch[i]) == number){ list.add(ch[i]); } } //删除 for (char c : list) { str = str.replace(String.valueOf(c), ""); } System.out.println(str); } sc.close(); } }
此题不用Map这种数据结构也可以解答,利用数组即可实现。其实原理和Map类似,充分利用了数组下标。
import java.util.*; public class Main{ public static void main(String[]args){ Scanner scan=new Scanner(System.in); while(scan.hasNextLine()){ String str=scan.nextLine(); if(str.length()>20){ continue; } int []max=new int[26]; char[]ch=str.toCharArray(); int min=Integer.MAX_VALUE; for(int i=0;i<ch.length;i++){ max[ch[i]-'a']++; min=min>max[ch[i]-'a']?max[ch[i]-'a']:min; } for(int i=0;i<max.length;i++){ if(max[i]==min){ str=str.replaceAll(String.valueOf((char)(i+97)), ""); } } System.out.println(str); } } }
相关文章推荐
- 实现删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。
- 实现删除字符串中出现次数最少的字符
- 编写一个函数,删除字符串中出现次数最少的字符,若多个字符出现次数一样,则都删除。
- 算法基础:删除字符串中出现次数最少的字符(Golang实现)
- Golang编程实现删除字符串中出现次数最少字符的方法
- 算法基础:删除字符串中出现次数最少的字符(Golang实现)
- 实现删除字符串中出现次数最少的字符
- 华为OJ中级题-删除字符串中出现次数最少的字符
- [华为上机练习题]7.删除字符串中出现次数最少的字符
- 删除字符串中出现次数最少的字符
- 华为机试——删除字符串中出现次数最少的字符
- HWOJ 删除字符串中出现次数最少的字符
- 【C编程练习】华为2013校园招聘机试题目题4:删除一个字符串中出现次数最少的字符,函数原型为:char * delChar(char *s,int iLen)
- 求字符串中字符的出现的最多次数和最少次数,删除后并获得最终字符
- 哈希表对字符串的高效处理7:删除字符串中出现次数最少的字符
- 华为oj 删除字符串中出现次数最少的字符
- 哈希表对字符串的高效处理7:删除字符串中出现次数最少的字符
- OJ 系列之删除字符串中出现次数最少的字符
- 删除一个字符串中出现次数最少的字符
- 删除字符串中出现次数最少的字符