【學習筆記】動態規劃 DP
阿新 • • 發佈:2020-11-21
給定兩個字串 s 和 t ,編寫一個函式來判斷 t 是否是 s 的字母異位詞。例如:輸入 s = "anagram",t = "nagaram",s 和 t 是字母異位詞,而 s = "rat",t = "car",此時 s 和 t 不是字母異位詞。你可以假設字串中只有小寫字母
解題思路
使用雜湊對映,首先判斷兩個字串長度是否相等,不相等則直接返回 false,若相等,則用一個數組初始化 26 個字母雜湊表,遍歷字串 s 和 t,s 負責在對應位置增加,t 負責在對應位置減少,如果雜湊表的值都為 0,則二者是字母異位詞
class Solution { public boolean isAnagram(String s, String t) { if(s.length() != t.length()) { return false; } int[] array = new int[26]; for(int i = 0; i < s.length(); i++) { array[s.charAt(i) - 'a']++; array[t.charAt(i) - 'a']--; } for(int i = 0; i < array.length; i++) { if(array[i] != 0) { return false; } } return true; } }
也可以藉助排序,看排序後的字串是否相等即可判斷
class Solution { public boolean isAnagram(String s, String t) { if (s.length() != t.length()) { return false; } char[] str1 = s.toCharArray(); char[] str2 = t.toCharArray(); Arrays.sort(str1); Arrays.sort(str2); return Arrays.equals(str1, str2); } }