如果Java Anagram类中的条件没有正确验证字符串.不是变位符串的变位符



下面的代码运行正常,但没有得到正确的变位结果。如果条件为,则返回false以获得正确的值。

import java.util.*;
public class Anagram{
public boolean solve(String s1, String s2){
if(s1.length() != s2.length()) return false;

String[] s11 = s1.split("");
String[] s12 = s2.split("");
Arrays.sort(s11);
System.out.println(Arrays.toString(s11));
Arrays.sort(s12);
System.out.println(Arrays.toString(s12));

for(int i = 0; i < s1.length(); i++){
if(s11[i] != s12[i])
System.out.println(s11[i]);
System.out.println(s12[i]);
return false;
}
return true;
}
public static void main(String[] args){
String s1 = "restful";
String s2 = "fluster";
Anagram v = new Anagram();
if(v.solve(s1, s2)){
System.out.println(s2 + " is anagram of the " + s1);
}else{
System.out.println("not an anagram");
}
}
}

请让我知道为什么不起作用

理想情况下,这里不需要检查两个数组中的单个字符您可以直接检查两个排序数组是否相等。将for循环替换为以下代码:

if(!Arrays.equals(s11, s12)){
return false ;
}

此外,您的代码也不起作用,因为==正在比较Java 中的引用而不是值

最新更新