LeetCode-242~Valid Anagram

Given two strings s and t, write a function to determine if t is an anagram of s.
For example,
s = "anagram", t = "nagaram", return true.s = "rat", t = "car", return false.
Note:You may assume the string contains only lowercase alphabets.
Follow up:What if the inputs contain unicode characters? How would you adapt your solution to such case?
給定兩個字符串,判斷t是否是s的異位構(gòu)詞

算法分析

異位構(gòu)詞:具體可參考維基百科,將一個詞的或句子中的字母重新排列,原文中每個字母只能使用一次,構(gòu)成一個新的詞或句子。

方法一(排序):

將給定的字符串轉(zhuǎn)換為數(shù)組,排序,判斷兩個數(shù)組是否相等即可。

Java代碼
public class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) return false;

        char[] s_array = s.toCharArray();
        char[] t_array = t.toCharArray();
        
        Arrays.sort(s_array);
        Arrays.sort(t_array);
        
        return Arrays.equals(s_array, t_array);
    }
}
方法二:

通過一個數(shù)組記錄已經(jīng)出現(xiàn)的字母的個數(shù)。如果為負(fù),return false

Java代碼
public class Solution {
    public boolean isAnagram(String s, String t) {
        if (s.length() != t.length()) return false;

        int[] counter = new int[26];
        
        for (int i = 0; i < s.length(); i ++) {
            counter[s.charAt(i) - 'a'] ++;
        }
        
        for (int i = 0; i < t.length(); i ++) {
            counter[t.charAt(i) - 'a'] --;
            if (counter[t.charAt(i) - 'a'] < 0) return false;
        }
        return true;
    }
}

參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容