亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

python,Java,JavaScript實(shí)現(xiàn)indexOf

瀏覽:6日期:2022-07-11 17:43:54

簡(jiǎn)介

最近做項(xiàng)目的時(shí)候,發(fā)現(xiàn)無(wú)論是前端還是后端,indexOf出現(xiàn)的概率都非常頻繁,今天我們來(lái)看下他的實(shí)現(xiàn)原理吧!

indexOf的含義:給定一個(gè)字符串去匹配另一個(gè)字符串的下標(biāo),如果匹配到,返回下標(biāo),如果匹配不到則返回-1,其實(shí)原理還是比較簡(jiǎn)單的,如果需要你實(shí)現(xiàn),那么應(yīng)該怎么做呢?

原理

現(xiàn)在給定匹配的字符串A,原始字符串B,比如匹配字符串A等于“叫練”,原始字符串B等于“邊叫邊練,我喜歡叫練”,你可能一眼就發(fā)現(xiàn)“叫練”是最后兩個(gè)字符,我們以B做循環(huán),一個(gè)一個(gè)單詞去匹配,先找“叫”,找到計(jì)數(shù)器加1,然后繼續(xù)找“練”,發(fā)現(xiàn)下個(gè)字符不是“練”,計(jì)數(shù)器清零,重新從“叫”開(kāi)始查找,現(xiàn)在查找到B的倒數(shù)第二個(gè)字符了,下個(gè)字符是“練”計(jì)算器再加1,此時(shí)計(jì)數(shù)器等于2也正好是A字符串的長(zhǎng)度,說(shuō)明找到了,查找原理就是這樣一個(gè)過(guò)程;下面我們分別以Java,javascript,python方式實(shí)現(xiàn)下。

注意:下面代碼沒(méi)有校驗(yàn),僅供參考,python是index方法,實(shí)現(xiàn)原理一樣,但找不到會(huì)報(bào)錯(cuò)!

實(shí)現(xiàn)

Java實(shí)現(xiàn)

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 下標(biāo) */public static int indexOf(String orgin,String serachString) { char[] chars = orgin.toCharArray(); char[] sChars = serachString.toCharArray(); //返回字符串下標(biāo) int index = -1; //匹配字符串計(jì)數(shù)器,用于查詢(xún)是否匹配到完整字符串 int s_index = 0; //全局計(jì)數(shù)器,用于計(jì)算下標(biāo) int move = 0; for (int i=0; i<chars.length; i++) { move++; //如果匹配到“叫”,繼續(xù)向下開(kāi)始匹配“練” 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實(shí)現(xiàn)

/** * @param orgin 原始字符串 B = “邊叫邊練,我喜歡叫練”; * @param serachString 匹配字符串 A=“叫練” **/ function indexOf(orgin,serachString) { //返回字符串下標(biāo) var index = -1; //匹配字符串計(jì)數(shù)器,用于查詢(xún)是否匹配到完整字符串 var s_index = 0; //全局計(jì)數(shù)器,用于計(jì)算下標(biāo) var move = 0; for (var i=0; i<orgin.length; i++) { move++; //如果匹配到“叫”,繼續(xù)向下開(kāi)始匹配“練” 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實(shí)現(xiàn)

# indexOf 算法原理# @param orgin 原始字符串 B = “邊叫邊練,我喜歡叫練”;# @param serachString 匹配字符串 A=“叫練”# @return int 下標(biāo)def index(orgin, serachString): # 返回字符串下標(biāo) index = -1 # 匹配字符串計(jì)數(shù)器,用于查詢(xún)是否匹配到完整字符串 s_index = 0 # 全局計(jì)數(shù)器,用于計(jì)算下標(biāo) move = 0 for letter in enumerate(orgin): move = move + 1 # 如果匹配到“叫”,繼續(xù)向下開(kāi)始匹配“練” 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實(shí)現(xiàn)indexOf的詳細(xì)內(nèi)容,更多關(guān)于indexOf的資料請(qǐng)關(guān)注好吧啦網(wǎng)其它相關(guān)文章!

標(biāo)簽: Python 編程
相關(guān)文章:
主站蜘蛛池模板: 国产亚洲欧美日韩v在线 | pans国产大尺度私密拍摄视频 | 欧美成人性生活视频 | 涩涩99| 亚洲综合丁香婷婷六月香 | 亚洲a级| 黑人逼 | 欧美一级毛片一级毛片 | 国产香蕉在线观看 | 久久综合久久综合久久 | 手机在线观看黄色 | 色综合亚洲七七久久桃花影院 | 国产精品人人爱一区二区白浆 | 久热精品视频 | 国产精品亚洲综合一区在线观看 | 国产大片线上免费观看 | 日日摸夜夜夜夜夜添 | 一级黄色片视频 | 精品国产成人a区在线观看 精品国产成人a在线观看 | 在线欧美精品国产综合五月 | 91小视频在线播放 | 欧美一级精品高清在线观看 | 国产精品每日在线观看男人的天堂 | 日韩欧美亚洲国产一区二区三区 | 成人黄色一级片 | 国产三级电影网址 | ppypp日本欧美一区二区 | 成人女人a毛片在线看 | 色一伦一情一区二区三区 | 免费精品精品国产欧美在线 | 亚洲欧美日韩中文字幕久久 | 黄色毛片a | 韩国毛片免费看 | 亚洲精品一区国产二区 | 国内免费自拍视频 | 久久亚洲精品中文字幕第一区 | 中文字幕在线播放视频 | 国产在线观看自拍 | 久久婷婷激情综合色综合也去 | 久久久国产精品视频 | 香蕉依人|