首页 > 解决方案 > 查找字谜的简单算法

问题描述

public class anagrm {
public static void main(String args[]){
    String s1 = new String();
    String s2 = new String();
    int count = 0;
    Scanner sc = new Scanner(System.in);
    s1 = sc.nextLine();``
    s2 = sc.nextLine();
    if(s1.length()==s2.length())
        for (int i = 0; i < s1.length(); i++)
            for (int j = 0; j < s1.length(); j++)
                if (s1.charAt(i) == s2.charAt(j)){
                    count++
                }

    if(count>=s1.length())
        System.out.println("string is anagram");
    else
        System.out.println("string is not anagram");
    System.out.println(count);
}


}

它是真实的军队和马尔..我知道错误在哪里,但我想以这种方式完成......

标签: javaanagram

解决方案


您会遇到错误,因为只要一个字母在 s1 中出现多次,即使 s2 只有一次该字母,您每次都会增加计数器。解决此问题的一种方法是使用 a代替,当您在字母中找到匹配项时,使用该方法StringBuilder从 s2 中删除该字母。deleteCharAt为此,您还需要将第二个for循环更改为循环,s2.length因为它会不断变短。不是那么优雅,但它会起作用。


推荐阅读