电脑知识|欧美黑人一区二区三区|软件|欧美黑人一级爽快片淫片高清|系统|欧美黑人狂野猛交老妇|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网

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

python,Java,JavaScript實現indexOf

瀏覽:5日期: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 編程
相關文章:
主站蜘蛛池模板: 原子吸收设备-国产分光光度计-光谱分光光度计-上海光谱仪器有限公司 | 空心明胶胶囊|植物胶囊|清真胶囊|浙江绿键胶囊有限公司欢迎您! | 北京燃气公司 用户服务中心| 污水/卧式/潜水/钻井/矿用/大型/小型/泥浆泵,价格,参数,型号,厂家 - 安平县鼎千泵业制造厂 | 嘉兴恒升声级计-湖南衡仪声级计-杭州爱华多功能声级计-上海邦沃仪器设备有限公司 | 冷油器-冷油器换管改造-连云港灵动列管式冷油器生产厂家 | 浙江宝泉阀门有限公司 | 【中联邦】增稠剂_增稠粉_水性增稠剂_涂料增稠剂_工业增稠剂生产厂家 | AGV叉车|无人叉车|AGV智能叉车|AGV搬运车-江西丹巴赫机器人股份有限公司 | 电竞学校_电子竞技培训学校学院-梦竞未来电竞学校官网 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 | 涡街流量计_LUGB智能管道式高温防爆蒸汽温压补偿计量表-江苏凯铭仪表有限公司 | 酒店厨房设计_中央厨房设计_北京商用厨房设计公司-奇能商厨 | 小区健身器材_户外健身器材_室外健身器材_公园健身路径-沧州浩然体育器材有限公司 | 保镖公司-私人保镖-深圳保镖公司【环宇兄弟保镖】 | 单级/双级旋片式真空泵厂家,2xz旋片真空泵-浙江台州求精真空泵有限公司 | 游动电流仪-流通式浊度分析仪-杰普仪器(上海)有限公司 | 中式装修设计_室内中式装修_【云臻轩】中式设计机构 | 电机铸铝配件_汽车压铸铝合金件_发动机压铸件_青岛颖圣赫机械有限公司 | 99文库_实习生实用的范文资料文库站| Copeland/谷轮压缩机,谷轮半封闭压缩机,谷轮涡旋压缩机,型号规格,技术参数,尺寸图片,价格经销商 CTP磁天平|小电容测量仪|阴阳极极化_双液系沸点测定仪|dsj电渗实验装置-南京桑力电子设备厂 | 福兰德PVC地板|PVC塑胶地板|PVC运动地板|PVC商用地板-中国弹性地板系统专业解决方案领先供应商! 福建成考网-福建成人高考网 | 培训中心-海南香蕉蛋糕加盟店技术翰香原中心官网总部 | 带式压滤机_污泥压滤机_污泥脱水机_带式过滤机_带式压滤机厂家-河南恒磊环保设备有限公司 | 高压包-点火器-高压发生器-点火变压器-江苏天网 | 西点培训学校_法式西点培训班_西点师培训_西点蛋糕培训-广州烘趣西点烘焙培训学院 | 电脑知识|软件|系统|数据库|服务器|编程开发|网络运营|知识问答|技术教程文章 - 好吧啦网 | 锂辉石检测仪器,水泥成分快速分析仪-湘潭宇科分析仪器有限公司 | 乐考网-银行从业_基金从业资格考试_初级/中级会计报名时间_中级经济师 | 旋振筛_不锈钢旋振筛_气旋筛_旋振筛厂家—新乡市大汉振动机械有限公司 | 【直乐】河北石家庄脊柱侧弯医院_治疗椎间盘突出哪家医院好_骨科脊柱外科专业医院_治疗抽动症/关节病骨伤权威医院|排行-直乐矫形中医医院 | 精雕机-火花机-精雕机 cnc-高速精雕机-电火花机-广东鼎拓机械科技有限公司 | 绿叶|绿叶投资|健康产业_绿叶投资集团有限公司 | 手表腕表维修保养鉴定售后服务中心网点 - 名表维修保养 | 小型高低温循环试验箱-可程式高低温湿热交变试验箱-东莞市拓德环境测试设备有限公司 | 首页-恒温恒湿试验箱_恒温恒湿箱_高低温试验箱_高低温交变湿热试验箱_苏州正合 | 伶俐嫂培训学校_月嫂培训班在哪里报名学费是多少_月嫂免费政府培训中心推荐 | PVC地板|PVC塑胶地板|PVC地板厂家|地板胶|防静电地板-无锡腾方装饰材料有限公司-咨询热线:4008-798-128 | 中式装修设计_全屋定制家具_实木仿古门窗花格厂家-喜迎门 | 深圳货架厂家_金丽声精品货架_广东金丽声展示设备有限公司官网 | 厂房出租-厂房规划-食品技术-厂房设计-厂房装修-建筑施工-设备供应-设备求购-龙爪豆食品行业平台 |