提示:您可在线编辑运行本教程的实例 - 运行实例,去试试!
测试传入的字符串是否为包含每个字母完全相同的数字的字谜。
// from 时 代 J a v a 公 众 号 - N o w J a v a . c o m public class Anagram { /** * Tests whether the passed-in strings are anagrams -- * containing the exact same number of each letter. * Punctuation, case, and order don't matter. * * @return true if the strings are anagrams; otherwise, false */ public static boolean areAnagrams(String string1, String string2) { String workingCopy1 = removeJunk(string1); String workingCopy2 = removeJunk(string2); workingCopy1 = workingCopy1.toLowerCase(); workingCopy2 = workingCopy2.toLowerCase(); workingCopy1 = sort(workingCopy1); workingCopy2 = sort(workingCopy2); return workingCopy1.equals(workingCopy2); } /* N o w J a v a . c o m - 时 代 Java 提 供 */ /** * Removes punctuation & spaces -- everything except * letters from the passed-in string. * * @return a stripped copy of the passed-in string */ protected static String removeJunk(String string) { int i, len = string.length(); StringBuilder dest = new StringBuilder(len); char c; for (i = (len - 1); i >= 0; i--) { c = string.charAt(i); if (Character.isLetter(c)) { dest.append(c); } } return dest.toString(); } /** * Sorts the passed-in string. * * @return a sorted copy of the passed-in string */ protected static String sort(String string) { char[] charArray = string.toCharArray(); java.util.Arrays.sort(charArray); return new String(charArray); } public static void main(String[] args) { String string1 = "Cosmo and Laine:"; String string2 = "Maid, clean soon!"; System.out.println(); System.out.println("Testing whether the following " + "strings are anagrams:"); System.out.println(" String 1: " + string1); System.out.println(" String 2: " + string2); System.out.println(); if (areAnagrams(string1, string2)) { System.out.println("They ARE anagrams!"); } else { System.out.println("They are NOT anagrams!"); } System.out.println(); } }