Java程序:检查两个字符串是否为字谜


字谜是指通过重新排列两个或多个单词的字母而形成的单词或短语。因此,检查两个给定字符串是否为字谜的逻辑如下:假设有两个字符串,如果两个字符串都包含相同的一组字母以及相同数量的字母(无论其顺序如何),那么我们可以说这两个字符串是字谜,否则不是。现在,让我们了解如何在我们的Java程序中实现此逻辑,以查找两个字符串是否为字谜。

问题陈述

在开始编写Java程序来检查两个字符串是否为字谜之前,让我们首先讨论一下问题陈述。

示例

输入

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

输出

Both strings are anagram

解释

如果我们重新排列这两个字符串,它们将变成“aehrt”。因此,它们是字谜。

现在,让我们以编程方式讨论上述逻辑。

检查两个字符串是否为字谜的方法

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

  • 然后,使用if-else块检查两个字符串的长度是否相同。如果相同,则进入块;否则退出并打印这两个字符串不是字谜。

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

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

  • 最后,使用Arrays.equals()方法检查两个数组是否包含相同的字符。如果两个数组包含相同的字符,则打印字符串是字谜,否则不是字谜。

示例1

以下示例说明如何在Java中检查两个字符串是否为字谜。

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程序来检查两个给定的字符串是否为字谜。

更新于:2024年7月5日

3K+ 次浏览

开启你的职业生涯

完成课程获得认证

开始学习
广告