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