s1= "bottle"
s2= "lebott"
2. Implementation
// Time:O(n log n), Space:O(n) for sorting public static boolean anagram(String s , String t) { //validate the input if (s.length() != t.length()) return false; String sortedS = new String(Arrays.sort(s.toCharArray())); String sortedT = new String(Arrays.sort(t.toCharArray())); return sortedS == sortedT; }
// NOTE: In order not to check all letters[256] to see if any on // of it is not Zero. Use num_unique_chars and num_completed_t public static boolean anagram(String s, String t) { // validate the input if ( s.length() != t.length() ) return false; int[] letters = new int[256]; int num_unique_chars = 0; int num_completed_t = 0; char[] s_array = s.toCharArray(); for (char c: s_array) { if(letters[c]==0) ++num_unique_chars; ++letters[c]; } for (int i = 0; i < t.length(); i++) { int c = (int) t.charAt(i); if ( letters[c] == 0 ) return false; --letters[c]; if ( letter[c] == 0) { ++num_completed_T; // NOTE: completed == unique AND is last character if ( num_completed_t == num_unique_chars ) { // it's a match if t has been processed completely return i == t.length() -1; } } } return false; }
3.Similar Ones
No comments:
Post a Comment