Leetcode:242.有效的字母异位词

148 阅读1分钟

力扣题目链接

题意:

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

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

示例 2: 输入: s = "rat", t = "car" 输出: false

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

思路:

  • 理解什么是互为字母异位词:就是两个字符串中,字符出现的频次是否相同,相同则是,不同则不是
  • 我们要判断某个字母是否出现在字符串里,即想到哈希表:一般哈希表都是用来快速判断一个元素是否出现集合里
/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
    //字符串s,t的长度不一样,直接不符合题意,return false
    if(s.length !== t.length) return false
    //1.定义数组record来记录字符串s里字符出现的频次
    const record = new Array(26).fill(0)
     //只要记录下每个字符相对于'a'的ASCII的值即可
    const base = "a".charCodeAt()
    //2.遍历字符串s,求出s中字符出现的次数
    for (const i of s){
        record[i.charCodeAt()-base]++
    }
    //3.遍历t字符串,对t中出现的字符映射哈希表索引上的数值-1
    for(const i of t){
    //4.record数组有不为0的元素,则说明两个字符串的字符出现频次不等,return false
        if(!record[i.charCodeAt()-base]) return false 
        record[i.charCodeAt()-base]--
    }
    return true
    
};