我最近有一個電話是SE的角色,被問及如何確定兩個單詞是否是anagrams,我給出了一個回覆,這個回覆涉及到了獲取角色的一些方面,如果它存在退出循環等。我認爲這是一個N^2解決方案,每個單詞一個循環,內部循環用於比較。使用素數來確定anagrams比循環更快嗎?
電話後,我做了一些挖掘並寫了一個新的解決方案;我計劃在明天的下一階段採訪中提交一個,它使用一個帶有唯一素數的哈希映射表示字母表中的每個字符。 然後我循環遍歷單詞列表,計算單詞的值並檢查它是否與我正在檢查的單詞相比較。如果價值觀相匹配,我們就有贏家(整個數學定理業務)。
這意味着一個循環,而不是兩個,這是好得多,但我開始懷疑自己,並想知道如果哈希映射和乘法的額外操作比原始建議更昂貴。
我99%肯定散列圖將是快,但...
任何人都可以證實或否認了我的懷疑?謝謝。
編輯:我忘了提及,我甚至在考慮做任何事情之前先檢查單詞的大小。
爲什麼這個標記的Java?這是一個有關高效算法的問題嗎?如果不是,這聽起來有些複雜。最後,我的方法只是構建一個'int [26]'和增量/減量。 – chrylis
@chrylis,標記已移除。這是關於算法,對不清晰的道歉。你可以擴展你提到的int [26] inc/dec嗎? – null