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