• 字符串匹配判断


    题目: 用javascript 实现一个方法,该方法能够判断两个字符串是否匹配,如:

    function isMatch(str1, str2){
         //your code starts here
    }
    isMatch('something','ginhtemos')  //true
    isMatch('aaa','aa')   //false
    isMatch('abb','baa')  //false
    isMatch('hello','olelh') //true

    一个很常规的想法就是把字符串排序后判断两个字符串是否相等,实现方法如下:

    function isMatch(str1,str2){
        return str1.split('').sort().join('') === str2.split('').sort().join('') 
    }

    该方法简单,其时间复杂度取决于sort方法,不同浏览器略有差异,Chrome中的V8引擎排序采用的算法与数组的长度有关,数组长度小于等于10采用的是插入排序,大于10是快速排序。

    第二种方法是记录每个字符串字母出现的次数,最后比较每个字符串字母出现的次数是否相等。时间复杂度为O(n),还是很快的。

    function isMatch(str1,str2){
        if(str1.length!==str2.length){
              return false;
        }
        var s1 = {};
        var s2 = {};
        for(let i=0;i<str1.length;i++){
           if(!s1[str1[i]]){
               s1[str1[i]]=0;
           }
            s1[str1[i]]++;
        }
        for(let i=0;i<str1.length;i++){
           if(!s2[str2[i]]){
               s2[str2[i]]=0;
           }
            s2[str2[i]]++;
        }
        for(let key in s1){
           if(s1[key]!==s2[key]){
                return false;
           }
       }
       return true;
    }            
    

      

  • 相关阅读:
    监控神器-普罗米修斯Prometheus的安装
    Prometheus+Grafana搭建监控系统
    Win10安装PyQt5与Qt Designer
    分区 partition
    16-成绩3
    15-成绩2
    14-票价问题
    13-union 、distinc、 join
    集群无法启动的问题?
    12-order by和group by 原理和优化 sort by 倒叙
  • 原文地址:https://www.cnblogs.com/renbo/p/9032366.html
Copyright © 2020-2023  润新知