我想查找兩個字符串是否是anagrams .. 我認爲要對它們進行排序,然後逐個檢查,但有沒有用於排序蜇傷的算法?或另一個想法,使其? (簡單的想法或代碼,因爲我是初學者)謝謝是兩個字符串anagrams或不?
2
A
回答
6
字符串是Haskell中的字符列表,因此標準sort
只是起作用。
> import Data.List
> sort "hello"
"ehllo"
您的想法排序,然後比較檢查anagrams罰款的聲音罰款。
+0
它工作!謝謝:) – 2015-03-31 15:10:30
1
我可以給你和想法 - (因爲我不是很瞭解哈斯克爾)。 取一個有26個空格的數組。
現在爲第一個字符串中的每個字符增加數組中的標記位置。
如果數組A[26]={0,0,...0}
現在,如果您找到'a',然後將A[1]=A[1]+1
; if'b'then A[2]=A[2]+1
;
現在,在每個字符第二串的情況下,你降低值在同一陣列中發現的每個字符。(如果你發現「A」降低A [1]像A[1]=A[1]-1
)
最後檢查是否所有數組元素爲0或不是。如果是0,那麼肯定他們是另一種不是一個字謎。
注意:您可以對大寫字母進行類似的擴展。
1
這是沒有必要數人羣每個字母。
簡而言之,您可以對字符串進行排序,然後檢查兩個列表中的每個元素。
例如,你有這樣的
"cinema" and "maneci"
這將有助於使你的字符串轉換爲字符的列表。
['c','i','n','e','m','a'] and ['m','a','n','e','c','i']
然後,您可以對這些列表進行排序,您將檢查每個字符。 請注意,您將有這些情況:
example [] [] = True
example [] a = False
example a [] = False
example (h1:t1)(h2:t2) = if h1==h2 then _retroactively_ else False
相關問題
- 1. Python(列表)字符串是anagrams或不是?
- 2. 只讀一個或兩個字符串
- 3. 爲了檢查兩個字符串是否爲anagrams,hashfunction()應該是什麼邏輯?
- 4. 查找兩個字符串是否字謎或者在C++中
- 5. 比較兩個哈希不管符號或字符串,軌道
- 6. 兩個字符串
- 7. 兩個字符串
- 8. 兩個字符串
- 9. 給定兩個字符串長度,測試兩個字符串是否相同
- 10. 確定一個字符串是不是另一個字符串
- 11. 當是一個字符串不是一個字符串
- 12. 確定是一個字符串是整數或雙或純字符串
- 13. C++是兩個字符串相同嗎?
- 14. 變量值是兩個字符串
- 15. 如何獲得兩個字符串之間的字符串,其中兩個字符串是重複的?
- 16. 檢查一個字符串是否是其他兩個給定的字符串
- 17. 從一個或兩個數字中刪除一個字符串
- 18. spinner.OnItemClickSelected恢復一個字符串,而不是兩個獨立的字符串從兩個微調
- 19. 字符串拆分方法不會返回兩個字符串
- 20. grep的R中兩個字符串是一個字符
- 21. 添加兩個int字符連成一個字符數組或字符串
- 22. fstream的一個字符串分隔符或兩個char
- 23. 不是字母或數字的字符測試字符串
- 24. PHP不能比較兩個「字符串」
- 25. 其中兩個字符串不同
- 26. 兩個字符串不相等
- 27. C++不能減去兩個字符串
- 28. 生成字符串中的所有anagrams C++
- 29. 兩個字符串是忽略空格,大寫字母或標點的字謎
- 30. F#:檢查一個值是否是一個字符串數組,字符串數組或字符串數組
我不明白downvotes。這個問題有點簡單,但與許多其他幫助請求不同,至少這顯示了一些努力,將問題減少爲字符串排序。 – chi 2015-03-31 17:20:26