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

javaobject oriented programmingprogramming更新于 2024/8/6 21:20:00

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

用于检查两个字符串是否为字谜的 Java 程序

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

实例

输入

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

输出

两个字符串都是字谜

解释

如果我们重新排列两个字符串,它们将变成"aehrt"。因此,它们是字母重排的。

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

示例 1

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

方法

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

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

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

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

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

import java.util.Arrays;
public class Main {
   public static void main(String[] args) {
        // 初始化两个字符串
        String inputStr1 = "Heart";
        String inputStr2 = "Earth";
        System.out.println("给定的字符串为:" + inputStr1 +" 和 " + inputStr2);
        // 将其字符转换为小写
        inputStr1 = inputStr1.toLowerCase();
        inputStr2 = inputStr2.toLowerCase();
        // 检查两个字符串是否为字母重排
        if(inputStr1.length() == inputStr2.length()) { // 检查长度
        // 将给定的字符串转换为字符数组
        char[] array1 = inputStr1.toCharArray();
        char[] array2 = inputStr2.toCharArray();
        // 对两个数组进行排序
        Arrays.sort(array1);
        Arrays.sort(array2);
        // 检查相等性并打印结果
        if(Arrays.equals(array1, array2)) {
            System.out.println("两个字符串都是字母重排");
        } else {
            System.out.println("两个字符串都不是字母重排。");
        }
        } else {
            System.out.println("两个字符串都不是字母重排。");
        }
   }
}

输出

给定的字符串为:Heart 和 Earth
两个字符串都是字谜

示例 2

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

import java.util.Arrays;
    public class Main {
        public static boolean checkAnagram(String inputStr1, String inputStr2) {
            // 将其字符转换为小写
            inputStr1 = inputStr1.toLowerCase();
            inputStr2 = inputStr2.toLowerCase();
            // 检查两个字符串是否为字母重排
            if(inputStr1.length() == inputStr2.length()) { // 检查长度
            // 将给定的字符串转换为字符数组
            char[] array1 = inputStr1.toCharArray();
            char[] array2 = inputStr2.toCharArray();
            // 对两个数组进行排序
            Arrays.sort(array1);
            Arrays.sort(array2);
            // 检查字符是否相同
            for (int i = 0; i < array1.length; i++) {
            if ( array1[i] != array2[i]) {
            return false;
            }
            }
        }
        return true;
    }
    public static void main(String[] args) {
        // 初始化两个字符串
        String inputStr1 = "Race";
        String inputStr2 = "Care";
        System.out.println("给定的字符串是:" + inputStr1 +" 和 " + inputStr2);
        // 调用方法检查字谜
        if(checkAnagram(inputStr1, inputStr2)) {
        System.out.println("两个字符串都是字谜");
        } else {
        System.out.println("两个字符串都不是字谜。");
        }
    }
}

输出

给定的字符串是:Race 和 Care
两个字符串都是字谜

结论

我们从定义字谜字符串开始,并解释了检查两个字符串是否是字谜的逻辑。在下一节中,我们借助示例更精确地理解了逻辑。随后,我们编写了两个 Java 程序来检查两个给定的字符串是否是字母重排的。


相关文章