Java 程序:检查两个字符串是否是变位词

要理解此示例,您应了解以下Java编程主题


如果一个字符串可以通过重新排列另一个字符串的字符来形成,那么这两个字符串就被称为变位词。例如,RaceCare。在这里,我们可以通过重新排列 Care 的字符来形成 Race。

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

import java.util.Arrays;

class Main {
  public static void main(String[] args) {
    String str1 = "Race";
    String str2 = "Care";
    
    str1 = str1.toLowerCase();
    str2 = str2.toLowerCase();

    // check if length is same
    if(str1.length() == str2.length()) {

      // convert strings to char array
      char[] charArray1 = str1.toCharArray();
      char[] charArray2 = str2.toCharArray();

      // sort the char array
      Arrays.sort(charArray1);
      Arrays.sort(charArray2);

      // if sorted char arrays are same
      // then the string is anagram
      boolean result = Arrays.equals(charArray1, charArray2);

      if(result) {
        System.out.println(str1 + " and " + str2 + " are anagram.");
      }
      else {
        System.out.println(str1 + " and " + str2 + " are not anagram.");
      }
    }
    else {
      System.out.println(str1 + " and " + str2 + " are not anagram.");
    }
  }
}

输出

race and care are anagram.

在 Java 中,我们有两个名为 str1str2 的字符串。我们正在检查 str1str2 是否为变位词。

我们首先将字符串转换为小写。这是因为 Java 是区分大小写的,并且在 Java 中 Rr 是两个不同的字符。

这里,

  • str1.toCharArray() - 将字符串转换为字符数组
  • Arrays.sort() - 对两个字符数组进行排序
  • Arrays.equal() - 检查排序后的字符数组是否相等

如果排序后的数组相等,那么这两个字符串就是变位词。

注意Arrays.sort() 使用 ASCII 值比较两个字符。并且,字符 Rr 不相等。因此,字符串应该转换为相同的大小写。


示例 2:从用户那里获取字符串输入并检查字符串是否为变位词

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

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

    // create an object of Scanner class
    Scanner input = new Scanner(System.in);

    // take input from users
    System.out.print("Enter first String: ");
    String str1 = input.nextLine();
    System.out.print("Enter second String: ");
    String str2 = input.nextLine();

    // check if length is same
    if(str1.length() == str2.length()) {

      // convert strings to char array
      char[] charArray1 = str1.toCharArray();
      char[] charArray2 = str2.toCharArray();

      // sort the char array
      Arrays.sort(charArray1);
      Arrays.sort(charArray2);

      // if sorted char arrays are same
      // then the string is anagram
      boolean result = Arrays.equals(charArray1, charArray2);

      if(result) {
        System.out.println(str1 + " and " + str2 + " are anagram.");
      }
      else {
        System.out.println(str1 + " and " + str2 + " are not anagram.");
      }
    }
    else {
      System.out.println(str1 + " and " + str2 + " are not anagram.");
    }

    input.close();
  }
}

输出

Enter first String: Race
Enter second String: Care
Race and Care are anagram.

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

你觉得这篇文章有帮助吗?

我们的高级学习平台,凭借十多年的经验和数千条反馈创建。

以前所未有的方式学习和提高您的编程技能。

试用 Programiz PRO
  • 交互式课程
  • 证书
  • AI 帮助
  • 2000+ 挑战