可以說我有“jfk”和“jfc”。我想遍歷兩個字符串并找出它們是否不同以及它們在哪里不同。我想看看這些字符串是否是字謎?!靶麻T”和“一個字”是變位詞。如果它不是字謎,我希望代碼通過字符串不同的字符數(shù)來告訴我。jfk 和 jfc 相差 1?!癿acd”和“mebc”相差 2,它們不能是變位詞。如果這兩個字符串的長度不同,那么它們就不可能是變位詞。我嘗試遍歷字符串,但那是我卡住的時候。我不知道如何同時遍歷兩個字符串并找出它們是否因某些字符而不同。我只檢查了兩個字符串的長度是否相同。 static void isAnagram(List <String> s1, List <String> s2) { if (s1.length() != s2.length()) { System.out.println("Not anagrams"); } else { for(int i = 0; i < s1.length(); i++) { for(int j = 0; j < s2.lenth(); j++) {//i know that iterating through both strings like this does not make sense but i am stuck. }```
3 回答

慕蓋茨4494581
TA貢獻1850條經(jīng)驗 獲得超11個贊
如果你被允許使用額外的庫,你應(yīng)該看看谷歌的番石榴,特別com.google.common.collect.Multiset<E>
是它的實現(xiàn)。您可以將每個字符串的字符放入一個Multiset<Character>
(不是 Multiset,這是行不通的,因為 E 必須是引用類型,沒有原始類型)。兩個字符串都是變位詞 if multiset1.equals(multiset2)
。
在這兩個 for 循環(huán)中,在我看來,您只需要一個循環(huán)并對兩個字符串使用相同的計數(shù)器?

慕勒3428872
TA貢獻1848條經(jīng)驗 獲得超6個贊
String str = "abc";
char[] chars = str.toCharArray();
您可以使用它來將字符串轉(zhuǎn)換為 char 數(shù)組,接下來,通過運行一個簡單的 if 條件并遞增一個變量來區(qū)分單詞,這將非常容易地循環(huán) char 數(shù)組。
添加回答
舉報
0/150
提交
取消