华为机试题-删除出现次数最少的字符

来源:互联网 发布:it狂人类似 编辑:程序博客网 时间:2024/06/05 19:48

分享一道华为的机试题:


java实现如下:

import java.util.HashMap;//引入类 import java.util.Scanner; import java.util.Set;public class Shanzifu{public static void main(String[] srgs){Scanner sc = new Scanner(System.in);while(sc.hasNext()){String input = sc.next();//获得输入System.out.println(process(input));//调用函数输出}}public static String process(String in){char[] ch = in.toCharArray();HashMap<Character, Integer> map = new HashMap();//输入的字符作为键,个数作为值for (int i = 0; i < ch.length; i++){//如果为已有的键,只需将值(统计的字符数)加1if (map.containsKey(ch[i])){map.put(ch[i], map.get(ch[i]) + 1);}else//如果为这样的键,则直接添加键值对map.put(ch[i], 1);}int min = 20;//初始值设为最大的可能的数20Set<Character> set = map.keySet();//遍历整个集合得到出现次数最小的字符for (char c:set){if (map.get(c) < min)min = map.get(c);}//将出现次数最少的字符利用替换的方式删除for (char c:set){if (map.get(c) == min)in = in.replace(String.valueOf(c), "");}//返回处理后的字符串return in;}}

Python实现:

__author__ = "Allen Liu"__time__ = "2017/9/15"'''This program used to '''str = input().strip()inset = set(str)mi = 20tmp = []for i in inset:    if str.count(i) <= mi:        mi = str.count(i)        tmp.append(i)for i in tmp:    str = str.replace(i, '')print(str)



阅读全文
1 0
原创粉丝点击