簡體   English   中英

如何比較兩個不同字符串中的字符

[英]How to compare characters in two different strings

假設我有“jfk”和“jfc”。 我想遍歷兩個字符串並找出它們是否不同以及它們的不同之處。 我想看看字符串是否是字謎。 “新門”和“一字”是字謎。 如果它不是字謎,我希望代碼告訴我字符串不同的字符數。 jfk 和 jfc 相差 1。“macd”和“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.
        }```

將數組轉換為字符數組。 然后按字母順序對數組進行排序,然后逐個字符地比較它們。

String str = "abc"; char[] chars = str.toCharArray(); 您可以使用它來將字符串轉換為字符數組,接下來通過運行一個簡單的 if 條件並增加一個變量來區分單詞的差異,將非常容易地循環字符數組。

如果你被允許使用額外的庫,你應該看看谷歌的番石榴,特別是在com.google.common.collect.Multiset<E>和它的實現。 您可以將每個字符串的字符放入Multiset<Character> (不是 Multiset,那將不起作用,因為 E 必須是引用類型,沒有原語)。 如果multiset1.equals(multiset2)兩個字符串都是字謎。

在兩個 for 循環中,在我看來您只需要一個循環並為兩個字符串使用相同的計數器?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM