Java 菜鸟教程

Java 流程控制

Java 数组

Java 面向对象(I)

Java 面向对象(II)

Java 面向对象(III)

Java 异常处理

Java 列表(List)

Java Queue(队列)

Java Map集合

Java Set集合

Java 输入输出(I/O)

Java Reader/Writer

Java 其他主题

Java 程序检查两个字符串是否为字母易位词(相同字母顺序不同)

Java 实例大全

在此示例中,我们将检查Java中两个字符串是否为字母易位词(anagram),一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词。

如果我们可以通过排列另一个字符串的字符来形成一个字符串,则可以说两个字符串是字谜。例如,Race Care。在这里,我们可以通过重新安排Care字母顺序来组成单词 Race。

示例1:检查两个字符串是否为字母易位词的Java程序

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    String str1 = "Java";
    String str2 = "Vaaj";

    //检查长度是否相同
    if(str1.length() == str2.length()) {

      //将字符串转换为字符数组
      char[] charArray1 = str1.toCharArray();
      char[] charArray2 = str2.toCharArray();

      //对字符数组进行排序
      Arrays.sort(charArray1);
      Arrays.sort(charArray2);

      //如果排序的字符数组相同
      //那么字符串是 anagram
      boolean result = Arrays.equals(charArray1, charArray2);

      if(result) {
        System.out.println(str1 + " 和 " + str2 + " 是字母易位词.");
      }
      else {
        System.out.println(str1 + " 和 " + str2 + " 不是字母易位词.");
      }
    }
  }
}

输出结果

Java 和 Vaaj 是字母易位词

在Java中,我们有两个名为str1和str2的字符串。在这里,我们检查str1和str2是否是字母数相同,但是顺序不同。

这里,

  • str1.toCharArray() - 将字符串转换为char数组

  • Arrays.sort() - 对两个字符数组进行排序

  • Arrays.equal() - 检查排序的char数组是否相等

如果排序的数组相等,则字符串为 anagram(字母易位词)。

示例2:从用户处获取字符串输入,并检查字符串是否为字母易位词

import java.util.Arrays;
import java.util.Scanner;

class Main {
  public static void main(String[] args) {

    //创建Scanner类的对象
    Scanner input = new Scanner(System.in);

    //接受用户的输入
    System.out.print("输入第一个字符串: ");
    String str1 = input.nextLine();
    System.out.print("输入第二个字符串: ");
    String str2 = input.nextLine();

    //检查长度是否相同
    if(str1.length() == str2.length()) {

      //将字符串转换为char数组
      char[] charArray1 = str1.toCharArray();
      char[] charArray2 = str2.toCharArray();

      //排序char数组
      Arrays.sort(charArray1);
      Arrays.sort(charArray2);

      //如果排序的char数组相同
      //那么字符串就是字母易位词
      boolean result = Arrays.equals(charArray1, charArray2);

      if(result) {
        System.out.println(str1 + " 和 " + str2 + " 是字母易位词.");
      }
      else {
        System.out.println(str1 + " 和 " + str2 + " 不是字母易位词.");
      }
    }

    input.close();
  }
}

输出结果

输入第一个字符串: Race
输入第二个字符串: Care
Race 和 Care 是字母易位词

在上面的示例中,我们使用Scanner类从用户那里获取输入。在这里,我们检查了用户提供的字符串是否为字母易位词。

Java 实例大全