242. 有效的字母异位词

119 阅读1分钟

题目

image.png

代码

  • 个单词包含相同的字母,并且各个字母出现的次数相同,但是次序不同
  • 建立一个map,记录26个字母和他们出现的次数
    • 扫描s时,次数++
    • 扫t时,次数--
    • 如果是异位,最后次数都=0
class Solution {
    public boolean isAnagram(String s, String t) {
        int sl = s.length(), tl = t.length();
        if (sl != tl) {
            return false;
        }
        //建立一个map,记录26个字母和他们出现的次数
        int[] map = new int[26];
        //次数++
        for (int i = 0; i < sl; i++) {
            map[s.charAt(i) - 'a']++;
        }
        //次数--
        for (int i = 0; i < tl; i++) {
            map[t.charAt(i) - 'a']--;
        }
        //++ --操作后,如果某个字母出现次数不为0,说明st不是字母异位
        for (int i = 0; i < 26; i++) {
            if (map[i] != 0) {
                return false;
            }
        }
        return true;
    }
}