问题描述:判断两个字符串中字母出现的次数是否相同
如:add dad : true ; add art: false
解法一: 暴力解法
思路:老生常谈地,使用两个长度为26的数组,统计两个单词每个字母的出现次数,再比较这两个字母即可
var isAnagram = function(s, t) {
if(s.length != t.length) return false
let count_s = new Array(26).fill(0)
let count_t = new Array(26).fill(0)
let i
for(i = 0; i < s.length; i++){
count_s[s[i].charCodeAt() - 96]++
count_t[t[i].charCodeAt() - 96]++
}
for(i = 0; i < 26; i++){
if(count_t[i] != count_s[i]) return false
}
return true
}
解法二:排序比较
思路:先把字符串转化为数组,再排序,最后再转化回来比较是否相等。排序是排除顺序不一致造成的干扰
var isAnagram = function(s, t) {
if(s.length != t.length) return false
//将字符串转化为数组:以下两个种方式都行
let s_Arr = Array.from(s)
let t_Arr = t.split('')
//数组排序sort()函数
s_Arr.sort()
t_Arr.sort()
//数组转化为字符串,再判断是否相等:数组转化为字符串同样有两种方式,但是会有逗号分隔
return s_Arr.toString() === t_Arr.join()
}