free-programming-books icon indicating copy to clipboard operation
free-programming-books copied to clipboard

String-解题:有效的字母异位词(NO.242)

Open meibin08 opened this issue 5 years ago • 2 comments

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

  • 示例 1:
输入: s = "anagram", t = "nagaram"
输出: true
  • 示例 2:
输入: s = "rat", t = "car"
输出: false
  • 说明: 你可以假设字符串只包含小写字母。

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

前端进阶题库

原题链接:力扣(LeetCode)242. 有效的字母异位词

meibin08 avatar Mar 17 '20 11:03 meibin08

解题思路

  • 首先 st必须是相等的,
  • st进行分割,然后遍历,以s为基础, 逐个对比,
  • 每次遇到相同的则从t删除,
  • 最后t为0,则通过

代码

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  if(s.length != t.length){
    return false;
  }
  let result = false;
  let sArr = s.split('');
  let tArr = t.split('');
  sArr.map((k)=>{
    let index = tArr.findIndex(u=>u==k);
    if(index>=0){
      tArr.splice(index,1);
    }
    return k;
  })
 
  return !tArr.length;
};

Javascriptc中文网

meibin08 avatar Mar 17 '20 11:03 meibin08

思路二

/**
 * @param {string} s
 * @param {string} t
 * @return {boolean}
 */
var isAnagram = function(s, t) {
  if(s.length != t.length){
    return false;
  }
  let result = s.split('').reduce((total,cur)=>{
    return total.replace(cur,"")
  },t);
  return !result.length;
};

image

自己做了后,还看了看评论区,高手不少

image

meibin08 avatar Mar 17 '20 11:03 meibin08