1. 程式人生 > >判斷兩個字串是否是anagram

判斷兩個字串是否是anagram

所謂 anagram, 就是兩個詞所用的字母及其個數都是一樣的,但是,字母的位置不一樣。比如 abcc 和 cbca 就是 anagram. 判斷的方法比較簡單,先把單個字母(字元)轉成整數,然後利用了hashtable+計數器的原理進行判斷。

public static boolean anagrams(String a, String b) {
		
		if (a.length() != b.length()) return false;
		int letters[] = new int[256];
		
		//initialization
		for (int i = 0; i < letters.length; i++) {
			letters[i] = 0;
		}
		
		//process the string a
		for (char c : a.toCharArray()) {
			++letters[c]; 
		}
		
		//if the char appears in string b, decrease the corresponding number of counts.
		for (char c : b.toCharArray()) {
			if (letters[c] == 0) {
				return false;
			}
			--letters[c];
		}
		
		//if string a and b are anagrams, all the values in array letters should be 0
		for (int i = 0; i < letters.length; i++) {
			if (letters[i] != 0) {
				return false;
			}
		}	
		return true;	
	}

ASCII 表: http://www.asciitable.com/