温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

如何实现indexOf原理以及Java和javascript及python实现是怎样的

发布时间:2021-09-30 09:29:46 来源:亿速云 阅读:141 作者:柒染 栏目:大数据

如何实现indexOf原理以及Java和javascript及python实现是怎样的,很多新手对此不是很清楚,为了帮助大家解决这个难题,下面小编将为大家详细讲解,有这方面需求的人可以来学习下,希望你能有所收获。

简介

    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

看完上述内容是否对您有帮助呢?如果还想对相关知识有进一步的了解或阅读更多相关文章,请关注亿速云行业资讯频道,感谢您对亿速云的支持。

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI