首页 > 其他 > 详细

242. 有效的字母异位词

时间:2020-09-05 23:45:05      阅读:94      评论:0      收藏:0      [点我收藏+]

问题描述

技术分享图片

解法一

将两个字符串先转化为数组,然后再进行数组的排序,最后再转化成字符串进行 === 的比较。

var isAnagram = function(s, t) {
    if(s.length != t.length) return false
    let sarr = Array.from(s);
    let tarr = Array.from(t);
    if(sarr.sort().toString() === tarr.sort().toString()){
        return true;
    }
    return false;
};

这种方法固然可以,但是该方法的时间复杂度是 js 数组内置排序算法的时间复杂度,最好的也是 o(nlogn),空间复杂度为:o(n)

解法二

该方法是在一次面试中,面试官提醒说时间复杂度为 o(n) 时提醒的一种思路。

就是,使用哈希的方式,从字符串映射成对象,对象的 key 是字符,对应的 value 是该字符出现的次数,然后再比较两个对象是否相等就可以了。

var isAnagram = function(s, t) {
    if(s.length != t.length) return false
    let sobj = {}, tobj = {};
    for(let i = 0; i < s.length; i++){
        if(sobj[s[i]] != undefined){
            sobj[s[i]]++
        }else{
            sobj[s[i]] = 1
        }
        if(tobj[t[i]] != undefined){
            tobj[t[i]]++
        }else{
            tobj[t[i]] = 1 
        }
    }
    for(let obj in sobj){
        if(sobj[obj] != tobj[obj])
            return false
    }
    return true
};

这种方式要比前一种好些,该方法的时间复杂度为 o(n),空间复杂度为 o(n)

解法三

这种方法是在 leetcode 上看到的大多数人的做法,就是将 26 个英文字符

242. 有效的字母异位词

原文:https://www.cnblogs.com/lovevin/p/13620217.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!