有效的字母异位词【LeetCode:242】

给定两个字符串 s 和 t ,编写一个函数来判断 t 是否是 s 的字母异位词。

  • 示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
  • 示例 2:
输入: s = "rat", t = "car"
输出: false
  • 说明:
    你可以假设字符串只包含小写字母。

  • 进阶:
    如果输入字符串包含 unicode 字符怎么办?你能否调整你的解法来应对这种情况?

解析

  1. 将字符串作为字符数组排序,然后比较即可,最后运行速度依赖于排序的实现方式
  2. 手动建立hash,用26长度的数组即可,因为题目说明只包含英语字母

实现

java实现,用时3ms,执行速度超越94.5%, 内存超越95.6%

public static boolean isAnagram(String s, String t) {
        int sl = s.length(), tl = t.length(), i;
        if (sl != tl) return false;
        int[] hashTable = new int[26];
        for (i = 0; i < sl; hashTable[s.charAt(i++) - 97]++) { }
        for (i--; i >= 0; ) {
            if (--hashTable[t.charAt(i--) - 97] < 0) {
                return false;
            }
        }
        for (i = 0; i < 26; i++) {
            if (hashTable[i] != 0) {
                return false;
            }
        }
        return true;
    }

题目来源:力扣(LeetCode)

你可能感兴趣的:(有效的字母异位词【LeetCode:242】)