代码改变世界

JS 子串在父串中的位置。

  沐海  阅读(471)  评论(0编辑  收藏  举报
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.把返回值的判断 独立出来。并使用标志位来判断和得出具体的位置。   很有新意。

 

 

记录一下。

编辑推荐:
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
阅读排行:
· 周边上新:园子的第一款马克杯温暖上架
· Open-Sora 2.0 重磅开源!
· .NET周刊【3月第1期 2025-03-02】
· 分享 3 个 .NET 开源的文件压缩处理库,助力快速实现文件压缩解压功能!
· [AI/GPT/综述] AI Agent的设计模式综述
记录生活、工作、学习点滴!
E-Mail:mahaisong@hotmail.com 欢迎大家讨论。
沐海博客园,我有一颗,卓越的心!
点击右上角即可分享
微信分享提示