在此示例中,我们将检查Java中两个字符串是否为字母易位词(anagram),一种把某个词或句子的字母的位置(顺序)加以改换所形成的新词。
如果我们可以通过排列另一个字符串的字符来形成一个字符串,则可以说两个字符串是字谜。例如,Race 与 Care。在这里,我们可以通过重新安排Care字母顺序来组成单词 Race。
示例1:检查两个字符串是否为字母易位词的Java程序
import java.util.Arrays; class Main { public static void main(String[] args) { String str1 = "Java"; String str2 = "Vaaj"; //检查长度是否相同 if(str1.length() == str2.length()) { //将字符串转换为字符数组 char[] charArray1 = str1.toCharArray(); char[] charArray2 = str2.toCharArray(); //对字符数组进行排序 Arrays.sort(charArray1); Arrays.sort(charArray2); //如果排序的字符数组相同 //那么字符串是 anagram boolean result = Arrays.equals(charArray1, charArray2); if(result) { System.out.println(str1 + " 和 " + str2 + " 是字母易位词."); } else { System.out.println(str1 + " 和 " + str2 + " 不是字母易位词."); } } } }
输出结果
Java 和 Vaaj 是字母易位词
在Java中,我们有两个名为str1和str2的字符串。在这里,我们检查str1和str2是否是字母数相同,但是顺序不同。
这里,
str1.toCharArray() - 将字符串转换为char数组
Arrays.sort() - 对两个字符数组进行排序
Arrays.equal() - 检查排序的char数组是否相等
如果排序的数组相等,则字符串为 anagram(字母易位词)。
示例2:从用户处获取字符串输入,并检查字符串是否为字母易位词
import java.util.Arrays; import java.util.Scanner; class Main { public static void main(String[] args) { //创建Scanner类的对象 Scanner input = new Scanner(System.in); //接受用户的输入 System.out.print("输入第一个字符串: "); String str1 = input.nextLine(); System.out.print("输入第二个字符串: "); String str2 = input.nextLine(); //检查长度是否相同 if(str1.length() == str2.length()) { //将字符串转换为char数组 char[] charArray1 = str1.toCharArray(); char[] charArray2 = str2.toCharArray(); //排序char数组 Arrays.sort(charArray1); Arrays.sort(charArray2); //如果排序的char数组相同 //那么字符串就是字母易位词 boolean result = Arrays.equals(charArray1, charArray2); if(result) { System.out.println(str1 + " 和 " + str2 + " 是字母易位词."); } else { System.out.println(str1 + " 和 " + str2 + " 不是字母易位词."); } } input.close(); } }
输出结果
输入第一个字符串: Race 输入第二个字符串: Care Race 和 Care 是字母易位词
在上面的示例中,我们使用Scanner类从用户那里获取输入。在这里,我们检查了用户提供的字符串是否为字母易位词。