亚洲免费在线视频-亚洲啊v-久久免费精品视频-国产精品va-看片地址-成人在线视频网

您的位置:首頁技術文章
文章詳情頁

python,Java,JavaScript實現indexOf

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

簡介

最近做項目的時候,發現無論是前端還是后端,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的資料請關注好吧啦網其它相關文章!

標簽: Python 編程
相關文章:
主站蜘蛛池模板: 成年男女男精品免费视频网站 | 一本久道久久综合婷婷五 | 国产成人网 | 欧美日韩一区二区三区免费 | 日韩欧美视频在线一区二区 | 99热免费 | 欧美叫床戏做爰无遮挡 | 久久久久综合国产 | 国产资源精品一区二区免费 | 亚洲男人在线天堂 | 国产成人夜间影院在线观看 | 欧美三级aaa | 亚洲资源在线播放 | 欧美视频三级 | 欧美午夜在线观看理论片 | 久久伊人男人的天堂网站 | 黄色网址www | 欧美在线视频二区 | 国产成人精品系列在线观看 | 日本特级黄毛片毛片视频 | 手机在线观看黄色网址 | 国产日韩欧美在线一二三四 | 欧美精品久久久久久久免费观看 | 国产高清精品在线 | 91av视频在线 | 日韩美女啪啪 | 久久国产视频在线观看 | 手机看片精品高清国产日韩 | 男人的天堂中文字幕 | 波多野结衣视频免费观看 | 草免费视频 | 久久99爱视频 | 久久精品国产精品青草不卡 | 91免费视 | 久久视频在线观看免费 | 国产成人精品免费午夜 | 在线观看精品视频一区二区三区 | 国产在线精品福利91香蕉 | 美女视频黄视大全视频免费网址 | 欧美一区二区不卡视频 | 久久亚洲精品视频 |