FileDocCategorySizeDatePackage
Anagram.javaAPI DocExample2696Tue Dec 12 18:58:04 GMT 2000None

Anagram

public class Anagram extends Object
This class compiles with v 1.2 and 1.3, but not previous versions, because its sort method uses the Arrays class, which was added in 1.2. To make Anagram work with early versions of the Java platform, you need to reimplement the sort method.

Fields Summary
Constructors Summary
Methods Summary
public static booleanareAnagrams(java.lang.String string1, java.lang.String string2)
Tests whether the passed-in strings are anagrams -- containing the exact same number of each letter. Punctuation, case, and (obviously) order don't matter.

return
true if the strings are anagrams; otherwise, false


        String workingCopy1 = removeJunk(string1);
        String workingCopy2 = removeJunk(string2);

	workingCopy1 = workingCopy1.toLowerCase();
	workingCopy2 = workingCopy2.toLowerCase();

	workingCopy1 = sort(workingCopy1);
	workingCopy2 = sort(workingCopy2);

        return workingCopy1.equals(workingCopy2);
    
public static voidmain(java.lang.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();
    
protected static java.lang.StringremoveJunk(java.lang.String string)
Removes punctuation, spaces -- everything except letters and digits from the passed-in string.

return
a stripped copy of the passed-in string

        int i, len = string.length();
  	StringBuffer dest = new StringBuffer(len);
	char c;

	for (i = (len - 1); i >= 0; i--) {
	    c = string.charAt(i);
	    if (Character.isLetterOrDigit(c)) {
		dest.append(c);
	    }
	}

        return dest.toString();
    
protected static java.lang.Stringsort(java.lang.String string)
Sorts the passed-in string. Reimplement this method if you want to use this class in pre-Java-2 versions of the platform.

return
a sorted copy of the passed-in string

	int length = string.length();
        char[] charArray = new char[length];

	string.getChars(0, length, charArray, 0);

	//NOTE: The following line of code causes pre-1.2
	//compilers to choke.
	java.util.Arrays.sort(charArray);

        return new String(charArray);