python,Java,JavaScript实现indexOf
简介
最近做项目的时候,发现无论是前端还是后端,indexOf出现的概率都非常频繁,今天我们来看下他的实现原理吧!
indexOf的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下标,如果匹配不到则返回-1,其实原理还是比较简单的,如果需要你实现,那么应该怎么做呢?
原理
现在给定匹配的字符串A,原始字符串B,比如匹配字符串A等于“叫练”,原始字符串B等于“边叫边练,我喜欢叫练”,你可能一眼就发现“叫练”是最后两个字符,我们以B做循环,一个一个单词去匹配,先找“叫”,找到计数器加1,然后继续找“练”,发现下个字符不是“练”,计数器清零,重新从“叫”开始查找,现在查找到B的倒数第二个字符了,下个字符是“练”计算器再加1,此时计数器等于2也正好是A字符串的长度,说明找到了,查找原理就是这样一个过程;下面我们分别以Java,javascript,python方式实现下。
注意:下面代码没有校验,仅供参考,python是index方法,实现原理一样,但找不到会报错!
实现
Java实现
publicstaticvoidmain(String[]args){ Stringorgin="边叫边练,我喜欢叫练"; Stringserach="叫练"; intindex=indexOf(orgin,serach); System.out.println(index); } /** *indexOf算法原理 *@paramorgin原始字符串B=“边叫边练,我喜欢叫练”; *@paramserachString匹配字符串A=“叫练” *@returnint下标 */ publicstaticintindexOf(Stringorgin,StringserachString){ char[]chars=orgin.toCharArray(); char[]sChars=serachString.toCharArray(); //返回字符串下标 intindex=-1; //匹配字符串计数器,用于查询是否匹配到完整字符串 ints_index=0; //全局计数器,用于计算下标 intmove=0; for(inti=0;iJavascript实现
/** *@paramorgin原始字符串B=“边叫边练,我喜欢叫练”; *@paramserachString匹配字符串A=“叫练” **/ functionindexOf(orgin,serachString){ //返回字符串下标 varindex=-1; //匹配字符串计数器,用于查询是否匹配到完整字符串 vars_index=0; //全局计数器,用于计算下标 varmove=0; for(vari=0;ipython实现
#indexOf算法原理 #@paramorgin原始字符串B=“边叫边练,我喜欢叫练”; #@paramserachString匹配字符串A=“叫练” #@returnint下标 defindex(orgin,serachString): #返回字符串下标 index=-1 #匹配字符串计数器,用于查询是否匹配到完整字符串 s_index=0 #全局计数器,用于计算下标 move=0 forletterinenumerate(orgin): move=move+1 #如果匹配到“叫”,继续向下开始匹配“练” ifletter[1]==serachString[s_index]: s_index=s_index+1 ifs_index==len(serachString): index=move-len(serachString) break else: s_index=0; returnindex以上就是python,Java,JavaScript实现indexOf的详细内容,更多关于indexOf的资料请关注毛票票其它相关文章!
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。