有效的字母异位词

2023-09-24 15:17:06 浏览数 (1)

题目描述

难度级别:简单

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

示例 1:

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

示例 2:

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

进阶:

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

解题思路

排序

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

代码语言:javascript复制
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。

代码语言:javascript复制
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/

0 人点赞