【问题标题】:How to compare characters in two different strings如何比较两个不同字符串中的字符
【发布时间】:2019-08-06 08:40:01
【问题描述】:

假设我有“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.
        }```

【问题讨论】:

    标签: java string


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        如果允许您使用其他库,您应该看看 Google 的 Guava,尤其是 com.google.common.collect.Multiset&lt;E&gt; 及其实现。您可以将每个字符串的字符放入 Multiset&lt;Character&gt; (不是 Multiset,这不起作用,因为 E 必须是引用类型,不是原语)。如果multiset1.equals(multiset2),两个字符串都是字谜。

        在两个 for 循环中,在我看来您只需要一个循环并为两个字符串使用相同的计数器?

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2022-09-30
          • 2019-01-14
          • 1970-01-01
          • 1970-01-01
          • 2022-06-29
          相关资源
          最近更新 更多