LintCode: 171. 亂序字串
阿新 • • 發佈:2019-02-11
題目:
分析:利用排序和雜湊表,對字串陣列中的每一個數組進行排序。這樣的話,亂序字串排序之後有相同的字元順序,用雜湊表儲存排序後的字串為key,源字串為value,因為一個字串可能有多個亂序字串,所以定義一個arraylist來儲存這些亂序字串。最後遍歷keyset,輸出value——ArrayList陣列容量大於等於2的value值。
package String; import java.util.ArrayList; import java.util.Arrays; import java.util.HashMap; import java.util.List; //給出一個字串陣列S,找到其中所有的亂序字串(Anagram)。 //如果一個字串是亂序字串,那麼他存在一個字母集合相同,但順序不同的字串也在S中。 public class anagrams { /** * @param strs: A list of strings * @return: A list of strings */ public List<String> anagrams(String[] strs) { // write your code here List<String> result=new ArrayList<>(); if(strs.length<=1 || strs==null) return result; HashMap<String,ArrayList<String>> hashMap=new HashMap<>(); for(int i=0;i<strs.length;i++){ char[] chars=strs[i].toCharArray(); Arrays.sort(chars); String s=String.valueOf(chars); if(!hashMap.containsKey(s)){ ArrayList<String> list=new ArrayList<>(); hashMap.put(s,list); } hashMap.get(s).add(strs[i]); } for(String s:hashMap.keySet()){ if(hashMap.get(s).size()>=2){ for(String ss:hashMap.get(s)) result.add(ss); } } return result; } }