亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

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

 更新時間:2020年09月09日 09:52:35   作者:叫練  
這篇文章主要介紹了python,Java,JavaScript如何實現(xiàn)indexOf,幫助大家更好的理解indexOf,感興趣的朋友可以了解下

簡介

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

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

原理

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

  注意:下面代碼沒有校驗,僅供參考,python是index方法,實現(xiàn)原理一樣,但找不到會報錯!

實現(xiàn)

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

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

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

相關文章

  • 對python創(chuàng)建及引用動態(tài)變量名的示例講解

    對python創(chuàng)建及引用動態(tài)變量名的示例講解

    今天小編就為大家分享一篇對python創(chuàng)建及引用動態(tài)變量名的示例講解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-11-11
  • Django多數(shù)據(jù)庫的實現(xiàn)過程詳解

    Django多數(shù)據(jù)庫的實現(xiàn)過程詳解

    這篇文章主要介紹了Django多數(shù)據(jù)庫的實現(xiàn)過程詳解,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友可以參考下
    2019-08-08
  • Python 中的 global 標識對變量作用域的影響

    Python 中的 global 標識對變量作用域的影響

    global 標識用于在函數(shù)內(nèi)部,修改全局變量的值。這篇文章主要介紹了Python 的 global 標識對變量作用域的影響,需要的朋友可以參考下
    2019-08-08
  • python 多維切片之冒號和三個點的用法介紹

    python 多維切片之冒號和三個點的用法介紹

    下面小編就為大家分享一篇python 多維切片之冒號和三個點的用法介紹,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2018-04-04
  • Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解

    Python3.6安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法詳解

    這篇文章主要介紹了Python3.6之安裝卸載、執(zhí)行命令、執(zhí)行py文件的方法,本文給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2020-02-02
  • 微信公眾號接入ChatGPT機器人的方法

    微信公眾號接入ChatGPT機器人的方法

    這篇文章主要介紹了微信公眾號接入ChatGPT機器人的方法,不難,總共可以分為兩步,一是在云服務器上部署自定義消息處理服務,二是微信公眾號配置自己的消息處理服務器,本文給大家講解的非常詳細,需要的朋友可以參考下
    2023-02-02
  • 針對Pandas的總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解

    針對Pandas的總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解

    這篇文章主要針對Pandas總結(jié)以及數(shù)據(jù)讀取_pd.read_csv()的使用詳解做出了實例,講解非常全面,值得收藏,需要的朋友可以參考下
    2023-03-03
  • Python如何新建三維數(shù)組并賦值

    Python如何新建三維數(shù)組并賦值

    本文詳細介紹了如何使用Python和numpy庫建立三維數(shù)組并對其進行賦值。首先,通過numpy創(chuàng)建一個3x3x3的三維數(shù)組,其次,將自定義的二維數(shù)組賦值到三維數(shù)組中。本文還解釋了相關參數(shù)的含義,使讀者能夠更好地理解和應用到其他多維矩陣的操作中
    2024-09-09
  • 解決python3 中的np.load編碼問題

    解決python3 中的np.load編碼問題

    這篇文章主要介紹了解決python3 中的np.load編碼問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2021-03-03
  • 使用Python制作一個簡易的遠控終端

    使用Python制作一個簡易的遠控終端

    這篇文章主要為大家詳細介紹了如何使用Python語言制作一個簡易的遠控終端,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的可以了解一下
    2023-04-04

最新評論