zoukankan      html  css  js  c++  java
  • 获取两个字符串中相同的最长子串

    在面试中遇到的一道算法题,当时没写出来,现在写出来了,分享一下

     1 function getLongSameStr(str1,str2){
     2    var subStr="";//记子串
     3    var begin=0;//记存在的索引
     4    var end=0;//记存在的索引
     5    var maxLength=0;//记存最长子串的长度  
     6    var targetStr="";//记符合条件的子串
     7      var targetArr=[];//记相同子串的集合
     8    while(true){
     9        subStr=str2.substring(begin,end);
    10        if(str1.indexOf(subStr)!=-1){
    11            //存在
    12            end++;
    13            targetArr.push(subStr);
    14        }else{
    15            //不存在
    16            begin++;
    17            end=begin;
    18       }
    19        if(end==str2.split("").length+1){
    20            break;
    21        }
    22    }
    23    for(var i=0;i<targetArr.length-1;i++){
    24        var tempLength=targetArr[i].split("").length;
    25        var tempLength1=targetArr[i+1].split("").length;
    26        if(tempLength<tempLength1){
    27            maxLength=tempLength1;
    28            }
    29        }    
    30      for(var i=0;i<targetArr.length;i++){
    31          var tempLength=targetArr[i].split("").length;
    32          if(tempLength==maxLength){
    33              console.log(targetArr[i]);
    34              }
    35          }
    36    return targetStr;
    37 }

    大体思路:拿一个字符串作为基串,另一个字符串作为对比串,记录对比的位置,当对比到有相同子串的时候,把记录末尾索引的end++,当没有对比到相同子串的时候,把记录开始位置的索引加1,记录末尾位置的索引等于开始位置的索引;然后把相同的子串都放在一个数组里,再循环找出最长的子串

  • 相关阅读:
    SpringMVC
    SpringMVC
    SpringMVC
    Spring
    Spring
    值类型和引用类型
    判断字符串的开头和结尾
    二分法(课后)
    验证码
    从1-36中随机出6个不相等的数
  • 原文地址:https://www.cnblogs.com/pearlsong/p/7798140.html
Copyright © 2011-2022 走看看