本文是在學(xué)習(xí)中的總結(jié),歡迎轉(zhuǎn)載但請注明出處:http://blog.csdn.net/pistolove/article/details/42744709
Given an array of strings, return all groups of strings that are anagrams.
Note: All inputs will be in lower-case.
思路:
(1)如果不知道anagrams的意思,很容易將題意理解錯了。最開始我理解的意思是求給定字符串?dāng)?shù)組的全排列有多少種。OJ幾次都錯了,后來被迫查了下anagrams的意思才知道,anagrams:由顛倒字母順序而構(gòu)成的字[短語]。看來英語還是要學(xué)好啊。該題意為給定1個字符串?dāng)?shù)組,求得該數(shù)組中所有由相同字符組成的字符串序列。例如:給定字符串?dāng)?shù)組["abc","acb","cab","xyz","fg"],則結(jié)果為["abc","acb","cab"]。
(2)本文主要應(yīng)用Map來存儲,其中Key為經(jīng)過排序后的字符串(通過對字符串進行排序,能夠?qū)㈨樞虼騺y的字符串變得相同),value為打亂順序的1系列字符串。上例中key為"abc",value為["abc","acb","cab"]。然后通過判斷Map中value對應(yīng)List中元素個數(shù)是不是大于1,如果大于1,說明有多個由相同字符組成但是順序被打亂的字符串。
(3)詳見下方代碼。希望對你有所幫助。(PS:其中Arrays.sort()方法是對給定的數(shù)組進行排序)
算法代碼實現(xiàn)以下:
上一篇 ECharts案例教程1