力扣:242. 有效的字母异位词

发布时间:2024年01月16日

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

思路:首先排除两个字符串长度不相等(不是异位词)情况;使用Map去记录第一个字符串中每个字符的个数,遍历第二个字符串中每个字母是否在map中,如果在就减去相应的个数,同时判断是否存在个数小于零的情况(不是异位词);如果不在map中,直接判定不是异位词;具体代码如下:

var isAnagram = function(s, t) {
  if(s.length !== t.length) return false; // 优先通过长度不相等确定不是异位词
  let map = new Map(); // 存储第一个词每个字母的个数
  for(let i = 0; i <s.length;i++){
      if(map.has(s[i])){ // 如果没有就默认值为1,有就进行+1;
          map.set(s[i],map.get(s[i])+1)
      } else {
          map.set(s[i],1)
      }
  }
  for(let j = 0; j <t.length; j++){
      if(map.has(t[j])){ // 如果字母在map中
          const res = map.get(t[j]) -1
          if(res<0){ // 如果出现小于0的就认为不是异位词;
              return false;
          }
          map.set(t[j],res)
      } else { // 如果字母没有在map中就直接判定不是异位词
          return false;
      }
  }
  // 所有字母都匹配完成,确定是异位词
  return true;
};

总结:该题关键是使用了map字典存储O(n),否则用暴力就需要双重循环O(n^2),典型的空间换时间的思路;

文章来源:https://blog.csdn.net/qq_39562292/article/details/135612020
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。