1. 程式人生 > 實用技巧 >【學習筆記】動態規劃 DP

【學習筆記】動態規劃 DP


給定兩個字串 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);
    }
}