• JS 子串在父串中的位置。


    String.prototype.indexOf=function(str){
    //返回值  0  -1  X   X:子串在父串中的位置。
    var len=this.length,len2=str.length-1,tag=0,i=0;
    if(len2<len){
    for(; i<len;i++){
    if(this.charAt(i)==str.charAt(tag)){  tag++;}
    else  if(tag!=0){
          tag=0;//如果不相等了。则子串 重新开始 比对。位置 从0开始
    	  i--;//如果不相等了。 原串 当前位置之前的所有数据不需要再比较。只要从当前向后比较即可。
    	  }
    if(tag>len2) break;
    }
    
    }
    if(len2<0) return 0;
    else return(tag<len2-1)?-1:i-tag+1;//如果是上面比较完成,从break跳出循环的。那么i-tag+1就是子串在父串的起始位置。
    }
    var a='abcd dcec cdee fg';
    alert(a.indexOf('ec'));
    


    这段代码是别人的。

    它有两个有趣的地方:

    1.标志位的使用 代替我们一般的嵌套循环。节省了大量的资源

    2.把返回值的判断 独立出来。并使用标志位来判断和得出具体的位置。   很有新意。

    记录一下。

    本人声明: 个人主页:沐海(http://www.cnblogs.com/mahaisong) 以上文章都是经过本人设计实践和阅读其他文档得出。如果需要探讨或指教可以留言或加我QQ!欢迎交流!
  • 相关阅读:
    HDU_1006_Tick and Tick
    HDU_1011_Starship Troopers_树型dp
    HDU_1520_Anniversary party_树型dp
    HDU_1176_免费馅饼_16.4.23再做
    HDU_1203_01背包
    HDU_1421_搬寝室_dp
    HDU_1505_矩阵中的最大矩形_dp
    STL_map的使用
    Semantic-UI-React (称 stardust) 对比 Antd
    meteor 为基础,联合 Apollo + React + React-Router
  • 原文地址:https://www.cnblogs.com/mahaisong/p/2199256.html
Copyright © 2020-2023  润新知