如何比较两个不同字符串中的字符

时间:2019-08-06 00:10:25

标签: java string

让我们说我有“ 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.
        }```

3 个答案:

答案 0 :(得分:1)

将数组转换为char数组。然后,按字母顺序对数组进行排序,然后逐个字符进行比较。

答案 1 :(得分:0)

String str = "abc"; char[] chars = str.toCharArray(); 您可以使用它来将字符串转换为char数组,然后通过运行一个简单的if条件并增加一个变量来区分单词的差异,这将非常容易循环char数组。

答案 2 :(得分:0)

如果允许您使用其他库,则应查看Google的Guava,尤其是com.google.common.collect.Multiset<E>及其实现。您可以将每个字符串的字符放入Multiset<Character>中(不是Multiset,它将不起作用,因为E必须是引用类型,不能是原始类型)。如果为multiset1.equals(multiset2),则两个字符串都是字谜。

在两个for循环中,我似乎只需要一个循环,并且对两个字符串使用相同的计数器?