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

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

变位词是由两个或多个单词的字母重新排列形成的单词或短语。因此,检查给定的两个字符串是否是变位词的逻辑如下:假设有两个字符串,如果两个字符串包含相同的字母集合并且字母的数量相同,无论它们的顺序如何,我们可以说这两个字符串是变位词,否则不是。现在,让我们了解如何在我们的Java程序中实现这个逻辑,以查找两个字符串是否是变位词。

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

在跳转到检查两个字符串是否是变位词的Java程序之前,让我们首先讨论问题陈述。

实例

输入

String1 = "Heart";
String2 = "Earth";

输出

Both strings are anagram

解释

如果我们重新排列这两个字符串,它们将变成”aehrt”。因此,它们是字母易位词(anagram)。

现在,让我们按照上述逻辑进行编程讨论。

示例1

以下示例演示了如何在Java中检查两个字符串是否为字母易位词(anagram)。

方法

  • 首先,初始化两个数组并将其字符转换为小写。

  • 然后,使用if-else块检查两个字符串的长度是否相同。如果相同,则进入块中;否则退出并打印字符串不是字母易位词(anagram)。

  • 如果两个字符串的长度相同,则进入if-else块。在这个块内,首先将字符串转换为字符数组,以便可以对其进行排序。

  • 现在,使用sort()方法对两个数组进行排序。

  • 最后,使用’equals()’方法检查两个数组是否包含相同的字符。如果两个数组包含相同的字符,则打印字符串是字母易位词(anagram);否则打印不是字母易位词(anagram)。

import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
      // initializing two Strings
      String inputStr1 = "Heart";
      String inputStr2 = "Earth";
      System.out.println("The given strings are: " + inputStr1 +" and " + inputStr2);
      // converting their characters to lowercase
      inputStr1 = inputStr1.toLowerCase();
      inputStr2 = inputStr2.toLowerCase();
      // to check both strings are anagram or not
      if(inputStr1.length() == inputStr2.length()) { // checking length
         // converting the given strings into character arrays
         char[] array1 = inputStr1.toCharArray();
         char[] array2 = inputStr2.toCharArray();
         // sorting both arrays
         Arrays.sort(array1);
         Arrays.sort(array2);
         // checking equality and printing the result
         if(Arrays.equals(array1, array2)) {
            System.out.println("Both strings are anagram");
         } else {
            System.out.println("Both strings are not anagram.");
         }
      } else {
         System.out.println("Both strings are not anagram.");
      }
   }
}

输出

The given strings are: Heart and Earth
Both strings are anagram

示例2

这是另一个用于检查两个字符串是否为变位词的Java程序。在这个示例中,我们将创建一个自定义的方法,其中包含检查变位词的逻辑。

import java.util.Arrays;
public class Main {
   public static boolean checkAnagram(String inputStr1, String inputStr2) {
      // converting their characters to lowercase
      inputStr1 = inputStr1.toLowerCase();
      inputStr2 = inputStr2.toLowerCase();
      // to check both strings are anagram or not
      if(inputStr1.length() == inputStr2.length()) { // checking length
         // converting the given strings into character arrays
         char[] array1 = inputStr1.toCharArray();
         char[] array2 = inputStr2.toCharArray();
         // sorting both arrays
         Arrays.sort(array1);
         Arrays.sort(array2);
         // checking the characters are same or not
         for (int i = 0; i < array1.length; i++) {
            if ( array1[i] !=  array2[i]) {
               return false;
            } 
         }
      } 
      return true;
   }
   public static void main(String[] args) {
      // initializing two Strings
      String inputStr1 = "Race";
      String inputStr2 = "Care";
      System.out.println("The given strings are: " + inputStr1 +" and " + inputStr2);
      // calling the method to check anagram
      if(checkAnagram(inputStr1, inputStr2)) {
         System.out.println("Both strings are anagram");
      } else {
         System.out.println("Both strings are not anagram.");
      }
   }
}

输出

The given strings are: Race and Care
Both strings are anagram

结论

我们在本文中先定义了字母易位词字符串,并解释了检查两个字符串是否为字母易位词的逻辑。在接下来的部分,我们通过一个示例更准确地理解了这个逻辑。之后,我们编写了两个Java程序来检查给定的两个字符串是否为字母易位词。

Camera课程

Python教程

Java教程

Web教程

数据库教程

图形图像教程

办公软件教程

Linux教程

计算机教程

大数据教程

开发工具教程