python,Java,JavaScript实现indexOf
程序员文章站
2022-09-24 09:19:36
简介 最近做项目的时候,发现无论是前端还是后端,indexof出现的概率都非常频繁,今天我们来看下他的实现原理吧! indexof的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下...
简介
最近做项目的时候,发现无论是前端还是后端,indexof出现的概率都非常频繁,今天我们来看下他的实现原理吧!
indexof的含义:给定一个字符串去匹配另一个字符串的下标,如果匹配到,返回下标,如果匹配不到则返回-1,其实原理还是比较简单的,如果需要你实现,那么应该怎么做呢?
原理
现在给定匹配的字符串a,原始字符串b,比如匹配字符串a等于“叫练”,原始字符串b等于“边叫边练,我喜欢叫练”,你可能一眼就发现“叫练”是最后两个字符,我们以b做循环,一个一个单词去匹配,先找“叫”,找到计数器加1,然后继续找“练”,发现下个字符不是“练”,计数器清零,重新从“叫”开始查找,现在查找到b的倒数第二个字符了,下个字符是“练”计算器再加1,此时计数器等于2也正好是a字符串的长度,说明找到了,查找原理就是这样一个过程;下面我们分别以java,javascript,python方式实现下。
注意:下面代码没有校验,仅供参考,python是index方法,实现原理一样,但找不到会报错!
实现
java实现
public static void main(string[] args) { string orgin = "边叫边练,我喜欢叫练"; string serach = "叫练"; int index = indexof(orgin,serach); system.out.println(index); } /** * indexof 算法原理 * @param orgin 原始字符串 b = “边叫边练,我喜欢叫练”; * @param serachstring 匹配字符串 a=“叫练” * @return int 下标 */ public static int indexof(string orgin,string serachstring) { char[] chars = orgin.tochararray(); char[] schars = serachstring.tochararray(); //返回字符串下标 int index = -1; //匹配字符串计数器,用于查询是否匹配到完整字符串 int s_index = 0; //全局计数器,用于计算下标 int move = 0; for (int i=0; i<chars.length; i++) { move++; //如果匹配到“叫”,继续向下开始匹配“练” if (chars[i] == schars[s_index]) { s_index++; if(s_index == schars.length) { index = move-schars.length; break; } } else { s_index = 0; } } return index; }
javascript实现
/** * @param orgin 原始字符串 b = “边叫边练,我喜欢叫练”; * @param serachstring 匹配字符串 a=“叫练” **/ function indexof(orgin,serachstring) { //返回字符串下标 var index = -1; //匹配字符串计数器,用于查询是否匹配到完整字符串 var s_index = 0; //全局计数器,用于计算下标 var move = 0; for (var i=0; i<orgin.length; i++) { move++; //如果匹配到“叫”,继续向下开始匹配“练” if (orgin.substr(i,1) == serachstring.substr(s_index,1)) { s_index++; if(s_index == serachstring.length) { index = move-serachstring.length; break; } } else { s_index = 0; } } return index; }
python实现
# indexof 算法原理 # @param orgin 原始字符串 b = “边叫边练,我喜欢叫练”; # @param serachstring 匹配字符串 a=“叫练” # @return int 下标 def index(orgin, serachstring): # 返回字符串下标 index = -1 # 匹配字符串计数器,用于查询是否匹配到完整字符串 s_index = 0 # 全局计数器,用于计算下标 move = 0 for letter in enumerate(orgin): move = move + 1 # 如果匹配到“叫”,继续向下开始匹配“练” if letter[1] == serachstring[s_index]: s_index = s_index + 1 if s_index == len(serachstring): index = move - len(serachstring) break else: s_index = 0; return index
以上就是python,java,javascript实现indexof的详细内容,更多关于indexof的资料请关注其它相关文章!
推荐阅读
-
浅析Java、C/C++、JavaScript、PHP、Python分别用来开发什么?
-
Java实现调用jython执行python文件的方法
-
javascript实现Java中的Map对象功能的实例详解
-
Python装饰器实现类Java注解功能
-
Java程序中实现调用Python脚本的方法详解
-
python实现数独游戏 java简单实现数独游戏
-
Python基于pyjnius库实现访问java类
-
python,Java,JavaScript实现indexOf
-
java/php/net/python“反传销”宣传网站的设计与实现
-
Python 利用字典实现类似 java switch case 功能