2011-10-02 66 views
-3

給定一個任意長度的字符串值,你應該確定彼此的字典的單詞的頻率。如何在字符串中查找字謎頻率?

public static Map<String, Integer> generateAnagramFrequency(String str) 
{ ... } 

例如: 查找 - > 1個 藝術 - > 2 在 - > 1 : 你的輸出應該是一個地圖如果字符串爲 「在購物車和DNA TRAC老鼠找到藝術」 - > 1 購物車 - > 2 和 - > 2

該鍵應該是第一個出現的單詞,數字是該單詞的字母數(包括其自身)的數量。

我想出的解決方案是對所有單詞進行排序,並比較兩個字符串中的每個字符,直到字符串結束。這將是O(logn)。我正在尋找其他有效的方法,它不會改變被比較的2個字符串。謝謝。

+0

它看起來很像家庭作業。你可以先告訴我們你不成功的方法。 –

+0

@belisarius我用我的解決方案更新了這個問題。請刪除投票,以便我可以提出問題。我現在被禁止問問題:( – false9striker

回答

1

我寫了一個創建n-gram(word分析)的JavaScript實現,在Extract keyphrases from text (1-4 word ngrams)

這個函數可以很容易的改變來分析字形的頻率:
用替換s = text[i];,這樣字符的順序就不再重要了。

1

通過按字母順序排列字母,爲每個單詞創建一個「簽名」。按照他們的簽名對單詞進行排序。按順序運行排序的列表;如果簽名與以前的簽名相同,則有一個字謎。