1

我正在自学如何使用 java 进行编码,并使用在 Internet 上找到的练习来练习我所学的内容。

我现在正处于一个问题的中间,该问题要求我比较两个字符串(来自用户的输入)并检查两者是否包含相同的字母。

例子:

areAnagrams("asd","dsa") -> true
areAnagrams("Debit Card","Bad Credit")=> true

明白了吗?

我知道 == 仅检查它们是否都引用同一个对象。我以为

public int compareTo(String otherString)

应该完成这项工作。但它不起作用=\

到目前为止我所做的是:

public static boolean areAnagrams(String a, String b)
{
int x=0;
    a.trim();
    b.trim();

    x=a.compareTo(b);
    System.out.println(x);
    return x==0 ? true:false;

}
    public static void main(String[] args)
    {
Scanner temp= new Scanner(System.in);
Scanner temp2= new Scanner(System.in);
String a= temp.next();
String b= temp2.next();
System.out.println(areAnagrams(a,b));

    }

}

但它不起作用。我认为有一个命令应该比较值,但我无法在网上找到它。

会感谢你的帮助

谢谢!

4

3 回答 3

3

试试这样怎么Arrays样: -

 char[] w1= firstWord.trim().toUpperCase().replaceAll("[\\s]", "").toCharArray();
 char[] w2= secondWord.trim().toUpperCase().replaceAll("[\\s]", "").toCharArray();
 Arrays.sort(w1);
 Arrays.sort(w2);
 return Arrays.equals(w1, w2);
于 2013-09-22T15:38:23.083 回答
2

compareTo方法检查字符串在字典上是否相等,请参阅: http://docs.oracle.com/javase/6/docs/api/java/lang/String.html#compareTo(java.lang.String)

您想比较输入字符串中的所有字符。

于 2013-09-22T15:40:51.133 回答
1

java中的字谜算法

在该链接中,请参阅:

public static boolean isAnagram(String s1, String s2){

    // Early termination check, if strings are of unequal lengths,
    // then they cannot be anagrams
    if ( s1.length() != s2.length() ) {
        return false;
    }

    char[] c1 = s1.toCharArray();
    char[] c2 = s2.toCharArray();
    Arrays.sort(c1);
    Arrays.sort(c2);
    String sc1 = new String(c1);
    String sc2 = new String(c2);
    return sc1.equals(sc2);

}`

于 2013-09-22T15:40:02.627 回答