[LeetCode242. 有效的字母异位词] | 刷题打卡

我心飞翔 分类:javascript

掘金团队号上线,助你 Offer 临门! 点击 查看详情

一、题目描述

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

示例 1:

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

输出: true

示例 2:

输入: s = "rat", t = "car"

输出: false

说明:你可以假设字符串只包含小写字母。

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

二、 思路分析

先将两个字符串切割成两个由每个字母组成的数组,然后通过sort排序,首选判断两个数组的长度是否一致,不一致直接返回false,如果长度一致,再通过循环比较两个数组对应的值是否相同,遇到不相等的直接跳出返回false,如果循环结束没有不相等的则返回true

三、AC代码

(自己的代码)

   let sArr =  s.split('').sort()
   let tArr = t.split('').sort()
   let isAnagramFlag = true
   if(sArr.length===tArr.length){
        sArr.forEach((item,index)=>{
            if(item !== tArr[index]){
                isAnagramFlag = false
            }
        })
   }else{
       isAnagramFlag = false
   }
       return isAnagramFlag
};
 

(官方题解)

var isAnagram = function(s, t) {
    return s.length == t.length && [...s].sort().join('') === [...t].sort().join('')
};
 

四、总结

1、前面的思路和官方题解差不多,但是后面循环去比较不如官方版的方法好,自己考虑的还是不太全面,t 是 ss 的异位词等价于「两个字符串排序后相等」。因此我们可以对字符串 ss 和 tt 分别排序看排序后的字符串是否相等即可判断

2、代码的写法上,也不够简洁,还得多努力学习
💪💪💪

回复

我来回复
  • 暂无回复内容