vie + element-ui 檔案 圖片上傳功能的實現
阿新 • • 發佈:2020-12-15
給定一個字串陣列,將字母異位詞組合在一起。字母異位詞指字母相同,但排列不同的字串。
示例:
輸入: [“eat”, “tea”, “tan”, “ate”, “nat”, “bat”]
輸出:
[
[“ate”,“eat”,“tea”],
[“nat”,“tan”],
[“bat”]
]
說明:
所有輸入均為小寫字母。
不考慮答案輸出的順序。
思路分析:排序
由於互為字母異位詞的兩個字串包含的字母相同,因此對兩個字串分別進行排序之後得到的字串一定是相同的,故可以將排序之後的字串作為雜湊表的鍵。
Java程式碼如下:
public class Ai {
public static void main(String[] args) {
String[] strs = {"eat", "tea", "tan", "ate", "nat", "bat"};
System.out.println(groupAnagrams(strs));
}
public static List<List<String>> groupAnagrams(String[ ] strs) {
Map<String,List<String>> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
byte[] temp = strs[i].getBytes();
Arrays.sort(temp);
String key = new String(temp);
List<String> list = map.getOrDefault (key,new ArrayList<String>());
list.add(strs[i]);
map.put(key,list);
}
return new ArrayList<>(map.values());
}
}
輸出為:
[[eat, tea, ate], [bat], [tan, nat]]