測評3:將一個字符串數組進行分組輸出,每組中的字符串都由相同字符組成。

題目描述:

將一個字符串數組進行分組輸出,每組中的字符串都由相同字符組成。舉個例子,

//輸入:["eat","tea","tan","ate","nat","bat"],輸出: [["ate","eat","tea"],["nat","tan"],["bat"]]

//提示:所有輸入字符串均爲小寫字母。

思路:整體思路是進行兩遍遍歷,第一遍按照給定數組過濾,第二重,把當前單詞以外沒有做過比較的單詞與其進行比較

代碼:

package twoTest;

import java.lang.reflect.Array;
import java.util.*;

public class Test15 {
    public static void main(String[] args) {
        String[] s = {"ate","tae","tan","ant","eat"};
        System.out.println(new Test15().stringGroup(s));
    }
    public List<List<String>> stringGroup(String[] strs){
        if(strs == null || strs.length == 0){
            return new ArrayList<>();
        }
        Arrays.sort(strs);
        Map<String,List<String>> map = new HashMap<>();
        for(String str : strs){
            char[] c = str.toCharArray();
            Arrays.sort(c);
            String sortedStr = String.valueOf(c);
            if(!map.containsKey(sortedStr))
                map.put(sortedStr,new ArrayList<>());
            map.get(sortedStr).add(str);
        }
        return new ArrayList<>(map.values());
    }
}

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章