1. 程式人生 > >給一個詞典,找出其中所有最長的單詞。

給一個詞典,找出其中所有最長的單詞。

題目

描述
給一個詞典,找出其中所有最長的單詞。

您在真實的面試中是否遇到過這個題?
樣例
在詞典

{
“dog”,
“google”,
“facebook”,
“internationalization”,
“blabla”
}
中, 最長的單詞集合為 [“internationalization”]

在詞典

{
“like”,
“love”,
“hate”,
“yes”
}
中,最長的單詞集合為 [“like”, “love”, “hate”]

挑戰
遍歷兩次的辦法很容易想到,如果只遍歷一次你有沒有什麼好辦法?

解答

只需要遍歷一次

public class LongestWord {
    /*
     * @param dictionary: an array of strings
     * @return: an arraylist of strings
     */
    public List<String> longestWords(String[] dictionary) {
        // write your code here
        int maxLength = 0;
        Map<Integer, List<String>> countMap = new
HashMap<Integer, List<String>>(); for (int i = 0; i < dictionary.length; i++) { // 儲存最大長度值 if (dictionary[i].length() > maxLength) { maxLength = dictionary[i].length(); } // 按照長度儲存為list if (countMap.get(dictionary[i].length()) == null
) { List countList = new ArrayList(); countList.add(dictionary[i]); countMap.put(dictionary[i].length(), countList); } else { List countList = countMap.get(dictionary[i].length()); countList.add(dictionary[i]); } } return countMap.get(maxLength); } }