摘要:同時使用方法將數組轉化為并利用的直接比較兩個字符串是否相等。通過這種方法效率值提高了不少。
題目要求
Given an array of strings, group anagrams together. For example, given: ["eat", "tea", "tan", "ate", "nat", "bat"], Return: [ ["ate", "eat","tea"], ["nat","tan"], ["bat"] ] Note: All inputs will be in lower-case.
將含有相同的字母但是排序可能不同的單詞分類至不同的數組
思路一:不使用map(超時了)這里利用了String的API方法toCharArray來對兩個單詞是否是相同字母組成的進行比較。但是效率較低。這里有重復的無效操作,例如獲得當前數組的第一個值并重新計算其對應的有序char數組。而且比較兩個char數組的方法造成了三圈循環,帶來的O(n3)的時間復雜度
public List> groupAnagrams(String[] strs) { List
> result = new LinkedList
>(); L1:for(int i = 0 ; i < strs.length ; i++){ String temp = strs[i]; int tempLength = temp.length(); L2:for(int j = 0 ; j
currentList = result.get(j); String currentString = currentList.get(0); int currentStringLength = currentString.length(); if(currentStringLength>tempLength){ List newResult = new ArrayList (); newResult.add(temp); result.add(j, newResult); continue L1; }else if (currentStringLength newResult = new ArrayList (); newResult.add(temp); result.add(newResult); } return result; } public boolean isPermutation(String s1, String s2){ if(s1.length() != s2.length()){ return false; } char[] s1array = s1.toCharArray(); Arrays.sort(s1array); char[] s2array = s2.toCharArray(); Arrays.sort(s2array); for(int i = 0 ; i 思路二:利用String.valueof 其實在這里利用Map會減少重復的生成char數組的過程。同時使用String.valueof()方法將char數組轉化為String并利用String的API直接比較兩個字符串是否相等。通過這種方法效率值提高了不少。
public List> groupAnagrams2(String[] strs){ Map
> map = new HashMap >(); for(String temp : strs){ char[] current = temp.toCharArray(); Arrays.sort(current); String sortedTemp = String.valueOf(current); if(!map.containsKey(sortedTemp)){ List tempResult = new ArrayList (); tempResult.add(temp); map.put(sortedTemp, tempResult); }else{ map.get(sortedTemp).add(temp); } } return new ArrayList >(map.values()); }
想要了解更多開發技術,面試教程以及互聯網公司內推,歡迎關注我的微信公眾號!將會不定期的發放福利哦~
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/70056.html
摘要:不需要關注輸出的順序,所有的輸入都是小寫。的就是經過排序后的字符數組所對應的字符串。因為不需要考慮輸出的順序,所以遍歷完直接輸出中的所有值即可。解法邊界情況判斷如果存在相同組成的元素 題目詳情 Given an array of strings, group anagrams together.題目要求輸入一個字符串數組,我們要將由同樣字母組成的字符串整理到一起,然后以如下例子中的格式...
摘要:我們將每個詞排序后,根據這個鍵值,找到哈希表中相應的列表,并添加進去。 Group Anagrams 最新更新請見:https://yanjia.me/zh/2019/01/... Given an array of strings, group anagrams together. For example, given: [eat, tea, tan, ate, nat, bat...
摘要:也就是同構異形體。特點是有相同數量的組成。素數可以素數表。這里使用而不是可以避免最后從導出結果的時間。修改了和得到的方法,其他都一樣。但是會有解不了的地方。還有個特殊情況就是不是一組。如果數字編碼出來都是如果用編碼,出現的就是。 49 Group Anagrams Given an array of strings, group anagrams together. For examp...
摘要:題目解答遇到這種要求一個的集合,首先想到的就是。那么被的作為把有同樣的以的形式放到里,然后輸出。 題目:Given an array of strings, group anagrams together. For example, given: [eat, tea, tan, ate, nat, bat], Return: [ [ate, eat,tea], [nat,tan],...
Problem Given an array of strings, group anagrams together. Example: Input: [eat, tea, tan, ate, nat, bat], Output: [ [ate,eat,tea], [nat,tan], [bat] ] Note: All inputs will be in lowercase.The ...
閱讀 3190·2021-11-10 11:35
閱讀 1295·2019-08-30 13:20
閱讀 1117·2019-08-29 16:18
閱讀 2131·2019-08-26 13:54
閱讀 2155·2019-08-26 13:50
閱讀 955·2019-08-26 13:39
閱讀 2473·2019-08-26 12:08
閱讀 1951·2019-08-26 10:37