思路:定义一个map,key值为每个排好序的字符串,value为字符串本身,key的类型为String,value的类型为ArrayList<String>。所以以上例子的map为
map={
"aet":{"ate","eat","tea"},
"abt":{bat},
"ant":{"nat","tan"}
}
以下为java代码
class Solution {
public List<List<String>> groupAnagrams(String[] strs) {
Map<String,ArrayList<String>> map = new HashMap<String,ArrayList<String>>();
for(String str:strs) {
//遍历每一个字符串
String[] temp = str.split("");
Arrays.sort(temp);
String orderStr = Arrays.toString(temp);
if(map.containsKey(orderStr)) {
// 如果已经包括了
ArrayList<String> list = new ArrayList<>();
list = map.get(orderStr);
list.add(str);
map.put(orderStr, list);
} else {
// 表示还没有包括
ArrayList<String> list = new ArrayList<>();
list.add(str);
map.put(orderStr, list);
}
}
// 遍历map
List<List<String>> result = new ArrayList<>();
for(Map.Entry<String, ArrayList<String>> entry:map.entrySet()) {
result.add(entry.getValue());
}
return result;
}
}
该题虽然是中等题,但是很简单。
以下为java代码:
class Solution {
public String reverseWords(String s) {
// 翻转之后的字符串前后不能有空格
String after = s.trim(); // 所有首先去除前后空格
String[] strs = after.split(" ");
String result = "";
for(int i=strs.length-1;i>=