Anagrams leetcode java


題目:

Given an array of strings, return all groups of strings that are anagrams.

Note: All inputs will be in lower-case.

 

題解:

這道題看所給的字符串數組里面有多少個是同一個變形詞變的。這道題同樣使用HashMap來幫助存老值和新值,以及幫忙判斷是否是變形詞。

首先對每個string轉換成char array然后排下序,HashMap里面的key存sort后的詞,value存原始的詞。然后如果這個排好序的詞沒在HashMap中出現過,那么就把這個sorted word和unsortedword put進HashMap里面。如果一個sorted word是在HashMap里面存在過的,說明這個詞肯定是個變形詞,除了把這個詞加入到返回結果中,還需要把之前第一個存進HashMap里面的value存入result中。

 

代碼如下:

 1   public ArrayList<String> anagrams(String[] strs) {
 2      ArrayList<String> result= new ArrayList<String>();
 3      
 4       if (strs== null||strs.length==0)
 5           return result;
 6      
 7      HashMap<String,ArrayList<String>> hm =  new HashMap<String, ArrayList<String>>();
 8      
 9       for (String s:strs){
10           char[] temp=s.toCharArray();
11          Arrays.sort(temp);
12          String tempStr= new String(temp);
13          
14           if (hm.containsKey(tempStr)){
15               if(hm.get(tempStr).size() == 1)
16                 result.add(hm.get(tempStr).get(0));
17              hm.get(tempStr).add(s);
18              result.add(s);
19          } else{
20              ArrayList<String> tempList= new ArrayList<String>();
21              tempList.add(s);
22              hm.put(tempStr, tempList);
23              }
24         }
25          return result;
26  }

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM