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);
}
}
它为军队和马尔提供了真实的信息..我明白错误在哪里,但我想以这种方式完成...
最佳答案
每当一个字母在 s1 中出现多次时,您就会遇到错误,即使 s2 仅出现一次该字母,您每次都会增加计数器。解决此问题的一种方法是使用 StringBuilder
来代替,当您找到字母中的匹配项时,使用 deleteCharAt
方法从 s2 中删除该字母。为此,您还需要将第二个 for
循环更改为循环 s2.length
,因为它会不断变短。不是那么优雅,但它会起作用。
关于java - 寻找字谜的简单算法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52045317/