1. https://leetcode-cn.com/problems/valid-anagram/submissions/
时间复杂度:O(nlogn)
排序:将字符串转换为数组进行排序,排序的结果在转成字符串进行判断。
/*** @param {string} s* @param {string} t* @return {boolean}*/var isAnagram = function(s, t) {if(s.length !== t.length) return falsereturn s.split("").sort().join('') == t.split("").sort().join('')};
时间复杂度:O(n)
哈希表:利用哈希表将S字符串字母出现的次数放在map中,T字符串对map对应的字母做减法,如果次数为1,删除对应的索引。最后判断map的size是否为0。
/*** @param {string} s* @param {string} t* @return {boolean}*/var isAnagram = function(s, t) {if(s.length !== t.length) return falseconst map = new Map()for (let i = 0; i < s.length; i++) {const getMap = map.get(s[i])if (!getMap) {map.set(s[i], 1)} else {map.set(s[i], getMap + 1)}}for (let i = 0; i < t.length; i++) {const getMap = map.get(t[i])if (getMap === 1) {map.delete(t[i])} else if (getMap) {map.set(t[i], getMap - 1)} else {map.set(t[i], 1)}}return !map.size};
2. https://leetcode-cn.com/problems/group-anagrams/
时间复杂度:O(n)
将数组中的每一个字符串进行排序作为map的key。排序结果相同key的值放在一个数组中,存到map。
var groupAnagrams = function(strs) {if(!Array.isArray(strs) && !strs.length) return faslelet map = new Map()strs.forEach(item => {const key = item.split("").sort().join("")map.has(key) ? map.get(key).push(item) : map.set(key,[item])})return Array.from(map.values())};
