题目描述:
将一个字符串数组进行分组输出,每组中的字符串都由相同字符组成。举个例子,
//输入:["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());
}
}