zoukankan      html  css  js  c++  java
  • 字符串匹配判断

    题目: 用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;
    }            
    

      

  • 相关阅读:
    算法题目积累0721
    java编辑器
    java简易编辑器
    公选网站作业4_2.php
    php注册登录系统(一)-极简
    Tomcat与Web服务器、应用服务器的关系
    PHP用户登录与注册页面
    网站选修课作业(4.1)
    网站选修课作业(3.1)
    svn和ftp的区别
  • 原文地址:https://www.cnblogs.com/renbo/p/9032366.html
Copyright © 2011-2022 走看看