华为2018校园招聘(提前批) 笔试 找字符串里的重复字符并排序

题目:

找出输入字符串中的重复字符,再根据ascii把重复的字符从小到大排序

思路:

遍历一遍字符串数组,建立一个辅助的TreeMap,里面key=字符 value=字符个数,排序就是TreeMap会默认按键的ascii从小到大排列,省去排序的部分,最后就把value>1的输出就完事了,O(N)=n。

import java.util.Scanner;
import java.util.TreeMap;
import java.util.Iterator;
import java.util.Map;
public class Solution {
    public static void Repatstr(String str) {
        if (str == null || str.length() == 0) 
            System.out.println("");
        char[] chars = str.toCharArray();
        Map<Character, Integer> map = new TreeMap<Character, Integer>();
        for(int i=0;i<str.length();i++)
            if(!map.containsKey(chars[i]))
                map.put(chars[i], 1);
            else
                map.put(chars[i],map.get(chars[i])+1);
        Iterator<Character> iterator = map.keySet().iterator();
        Character key;
        while (iterator.hasNext()) {
            key = iterator.next();
            if(map.get(key)>1)
                System.out.println(key);
        }
    }
public static void main(String[] args) {     
    Scanner input=new Scanner(System.in);
    String st=input.nextLine();
    Repatstr(st);
    input.close();
    }
}

猜你喜欢

转载自blog.csdn.net/gsch_12/article/details/81355395
今日推荐