标签:stringbu ++ 相同 att 转换 class oge sci public
Given an array of strings, group anagrams together.
Example:
Input: ["eat", "tea", "tan", "ate", "nat", "bat"],
Output:
[
["ate","eat","tea"],
["nat","tan"],
["bat"]
]
Note:
对字符串分类,把含有相同字母的字符串聚合到一起。第一时间想到要用HashMap,但是要把什么作为key呢?想到把字符串的字符按照ascii码的大小排序再转换为String作为Key。
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
HashMap<String, List<String>> map = new HashMap<>();
for (int i = 0; i < strs.length; i++) {
char[] chars = strs[i].toCharArray();
Arrays.sort(chars);
StringBuilder sb = new StringBuilder();
for (int j = 0; j < chars.length; j++) {
sb.append(chars[j]);
}
String key = sb.toString();
if (map.containsKey(key)) {
map.get(key).add(strs[i]);
} else {
List<String> str = new ArrayList<>();
str.add(strs[i]);
map.put(key, str);
}
}
List<List<String>> res = new ArrayList<>(map.values());
return res;
}
}
效率还不错。注意几个api的运用,在做算法题的时候经常用到,一个是toCharArray()把字符串转换成字符数组,一个是Arrays.sort()对字符串排序。
标签:stringbu ++ 相同 att 转换 class oge sci public
原文地址:https://www.cnblogs.com/ekoeko/p/9664901.html