溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

如何實現indexOf原理以及Java和javascript及python實現是怎樣的

發布時間:2021-09-30 09:29:46 來源:億速云 閱讀:172 作者:柒染 欄目:大數據

如何實現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

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女