如果字符串A和字符串B包含相同的字符,則稱它們爲「兄弟字符串」。
例如:「abc」和「cab」,「aabb」和「baab」。
問題是如何檢查兩個字符串是兄弟字符串(快)?如何檢查兩個字符串是否是「兄弟字符串」?
0
A
回答
5
0
什麼都字符數組,並以計數的B的等」 的數量比比較兩個數組的
0
這種情況下最快的算法具有O(n)的複雜度,其中n是最長字符串的長度。
In fact in O(n)you can create a array(one for each string)where characters are stored。此外,你需要另外的O(n)時間來做測試。
2
只需計算每個字符在字符串中出現的次數。然後他們比較兩個字符串的計數。
如果字符串總是ASCII或一些8位編碼,那麼簡單數組就足夠了。
如果它們可以包含Unicode字符,請使用哈希映射。
+0
對downvoter:謹慎評論你認爲這個答案錯了嗎? – svick
0
讓我來展示我的變體。每個字符都有它的int ASCII值。所以我認爲,你可以將兩個字符串的所有字符相乘,並比較兩個產品。例如:
private static boolean compareForBrother(String s1, String s2) {
long lProduct= 1L;
for (byte b : s1.getBytes()) {
lProduct *= b;
}
long lProduct2= 1L;
for (byte b : s2.getBytes()) {
lProduct2 *= b;
}
return (lProduct2 == lProduct);
}
0
比較每個字符串中的字符集。
在Python中,是這樣的:
if set(stringA) == set(stringB):
print("%s and %s are brother strings" % (stringA, stringB))
0
準備字符頻率的直方圖;這與基數排序完全相同。然後比較直方圖。
相關問題
- 1. C - 檢查字符串是否是另一個字符串的子字符串
- 2. 檢查一個字符串是否是其他兩個給定的字符串
- 3. 檢查字符串是否包含字(不是子字符串!)
- 4. 如何檢查字符串是否在字符串列表中
- 5. 如何檢查是否字符串包含字符串數組字符串
- 6. 如何檢查是否字符串有
- 7. 如何檢查字符串是否是另一個字符串的迴文
- 8. 如何檢查是否一個字符串是在字符串的結束
- 9. 如何檢查一個字符串是否是rgb十六進制字符串
- 10. VB,如何檢查某個字符是否在字符串中
- 11. 如何檢查字符串是否包含某個字符?
- 12. 檢查字符串是否是子字符串
- 13. 爪哇 - 檢查是否字符串在另一個字符串
- 14. 檢查字符串中是否存在多個字符串
- 15. Applescript:檢查一個字符串是否包含空字符串?
- 16. 檢查字符串變量是否爲某個字符串值
- 17. 檢查字符串是否以另一個字符串開頭?
- 18. 如何檢查一個字符串是否是數字?
- 19. 如何檢查一個字符串是否是純字母?
- 20. 如何檢查一個字符串是否包含兩個相同的字符?
- 21. 如何檢查一個字符串是否包含兩個星號字符?
- 22. 如何檢查兩個html字符串是否與python等價?
- 23. 如何在JSP中檢查兩個字符串是否相等?
- 24. 檢查字符串x是否等於字符串中的任何字符串[]
- 25. 如何檢查是否字符串==「\」(字面字符)
- 26. 檢查字符串是否是由某個字符
- 27. 檢查字符串是否有數字
- 28. 檢查字符串是否是Spotify URL
- 29. 檢查字符串是否是實數
- 30. 檢查字符串是否包含兩次相同的字符
你有一個字母表,所以可編碼字符的數量是已知的和有限的。桶對字符串進行排序並在'O(n)'中進行比較。 – davin
關於最簡單的你可以做到這一點:'sorted(a)== sorted(b)'(Python) –
這是一個簡單的案例http://stackoverflow.com/q/6691184/395626 – ruslik