美文网首页
有效的字母异位词

有效的字母异位词

作者: 422ccfa02512 | 来源:发表于2020-12-19 23:58 被阅读0次

    题目描述

    难度级别:简单

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

    示例 1:

    输入: s = "anagram", t = "nagaram"
    输出: true

    示例 2:

    输入: s = "rat", t = "car"
    输出: false
    说明:
    你可以假设字符串只包含小写字母。

    进阶:

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

    解题思路

    排序

    通过将2个字符串转为数组排序后,转为字符串进行比较

    const isAnagram = (s,t) => 
        s.length === t.length && [...s].sort().join("") === [...t].sort().join("")
    

    哈希表

    通过数组创建哈希表,初始化长度为26,每个元素值为0。由于存在unicode的字符,使用String.prototype.codePointAt解析。首先遍历s字符串,对遍历到的字符在hashMap中进行+1,之后遍历t,对遍历到的元素进行-1,若遍历到的元素在hashMap中值小于0则输出false。

    const isAnagram = (s,t) => {
        if (s.length !== t.length) return false
    
        const hashMap = new Array(26).fill(0)
    
        for (let i = 0; i < s.length; i++)
            hashMap[s.codePointAt(i) - 'a'.codePointAt(0)]++
    
        for (let i = 0; i < t.length; ++i) {
            hashMap[t.codePointAt(i) - 'a'.codePointAt(0)]--
            if (hashMap[t.codePointAt(i) - 'a'.codePointAt(0)] < 0)
                return false;
        }
    
        return true;
    }
    

    题目来源:力扣(LeetCode)
    链接:https://leetcode-cn.com/problems/valid-anagram/

    相关文章

      网友评论

          本文标题:有效的字母异位词

          本文链接:https://www.haomeiwen.com/subject/zcjhnktx.html