如果一个字符串可以通过重新排列另一个字符串的字符来形成,那么这两个字符串就被称为变位词。例如,Race 和 Care。在这里,我们可以通过重新排列 Care 的字符来形成 Race。
示例 1:检查两个字符串是否为变位词的 Java 程序
import java.util.Arrays;
class Main {
public static void main(String[] args) {
String str1 = "Race";
String str2 = "Care";
str1 = str1.toLowerCase();
str2 = str2.toLowerCase();
// check if length is same
if(str1.length() == str2.length()) {
// convert strings to char array
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
// sort the char array
Arrays.sort(charArray1);
Arrays.sort(charArray2);
// if sorted char arrays are same
// then the string is anagram
boolean result = Arrays.equals(charArray1, charArray2);
if(result) {
System.out.println(str1 + " and " + str2 + " are anagram.");
}
else {
System.out.println(str1 + " and " + str2 + " are not anagram.");
}
}
else {
System.out.println(str1 + " and " + str2 + " are not anagram.");
}
}
}
输出
race and care are anagram.
在 Java 中,我们有两个名为 str1 和 str2 的字符串。我们正在检查 str1 和 str2 是否为变位词。
我们首先将字符串转换为小写。这是因为 Java 是区分大小写的,并且在 Java 中 R 和 r 是两个不同的字符。
这里,
- str1.toCharArray() - 将字符串转换为字符数组
- Arrays.sort() - 对两个字符数组进行排序
- Arrays.equal() - 检查排序后的字符数组是否相等
如果排序后的数组相等,那么这两个字符串就是变位词。
注意:Arrays.sort()
使用 ASCII 值比较两个字符。并且,字符 R 和 r 不相等。因此,字符串应该转换为相同的大小写。
示例 2:从用户那里获取字符串输入并检查字符串是否为变位词
import java.util.Arrays;
import java.util.Scanner;
class Main {
public static void main(String[] args) {
// create an object of Scanner class
Scanner input = new Scanner(System.in);
// take input from users
System.out.print("Enter first String: ");
String str1 = input.nextLine();
System.out.print("Enter second String: ");
String str2 = input.nextLine();
// check if length is same
if(str1.length() == str2.length()) {
// convert strings to char array
char[] charArray1 = str1.toCharArray();
char[] charArray2 = str2.toCharArray();
// sort the char array
Arrays.sort(charArray1);
Arrays.sort(charArray2);
// if sorted char arrays are same
// then the string is anagram
boolean result = Arrays.equals(charArray1, charArray2);
if(result) {
System.out.println(str1 + " and " + str2 + " are anagram.");
}
else {
System.out.println(str1 + " and " + str2 + " are not anagram.");
}
}
else {
System.out.println(str1 + " and " + str2 + " are not anagram.");
}
input.close();
}
}
输出
Enter first String: Race Enter second String: Care Race and Care are anagram.
在上面的示例中,我们使用了 Scanner 类从用户那里获取输入。在这里,我们检查了用户提供的字符串是否为变位词。