最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

python,Java,JavaScript實現indexOf

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

簡介

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

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

原理

  現在給定匹配的字符串A,原始字符串B,比如匹配字符串A等于“叫練”,原始字符串B等于“邊叫邊練,我喜歡叫練”,你可能一眼就發(fā)現“叫練”是最后兩個字符,我們以B做循環(huán),一個一個單詞去匹配,先找“叫”,找到計數器加1,然后繼續(xù)找“練”,發(fā)現下個字符不是“練”,計數器清零,重新從“叫”開始查找,現在查找到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++;
    //如果匹配到“叫”,繼續(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實現

/**
   * @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++;
      //如果匹配到“叫”,繼續(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實現

# 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
    # 如果匹配到“叫”,繼續(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實現indexOf的詳細內容,更多關于indexOf的資料請關注腳本之家其它相關文章!

相關文章

  • 關于opencv讀取和寫入路徑有漢字的處理方式

    關于opencv讀取和寫入路徑有漢字的處理方式

    這篇文章主要介紹了關于opencv讀取和寫入路徑有漢字的處理方式,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-07-07
  • 在Keras中實現保存和加載權重及模型結構

    在Keras中實現保存和加載權重及模型結構

    這篇文章主要介紹了在Keras中實現保存和加載權重及模型結構,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧
    2020-06-06
  • Python 3 實現定義跨模塊的全局變量和使用教程

    Python 3 實現定義跨模塊的全局變量和使用教程

    這篇文章主要介紹了Python 3 實現定義跨模塊的全局變量和使用,本文通過實例代碼相結合的形式給大家介紹的非常詳細,具有一定的參考借鑒價值,需要的朋友可以參考下
    2019-07-07
  • python中定時器的高級使用方式詳解

    python中定時器的高級使用方式詳解

    在Python編程中,定時器是一種非常有用的工具,用于執(zhí)行特定任務或函數,本文將介紹一些高級的定時器使用方式,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • Python如何在列表尾部添加元素

    Python如何在列表尾部添加元素

    這篇文章主要介紹了Python如何在列表尾部添加元素,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • python分段函數的實現示例

    python分段函數的實現示例

    分段函數是一種數學函數,它將定義域分成若干個區(qū)間,每個區(qū)間對應一個函數,本文主要介紹了python分段函數的實現示例,具有一定的參考價值,感興趣的可以了解一下
    2023-12-12
  • python繪制直方圖的方法

    python繪制直方圖的方法

    這篇文章主要為大家詳細介紹了python繪制直方圖的方法,文中示例代碼介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2022-04-04
  • Bokeh:Python交互式可視化的利器詳解

    Bokeh:Python交互式可視化的利器詳解

    這篇文章主要介紹了Bokeh:Python交互式可視化的利器,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2025-03-03
  • Python實現矩陣可視化的示例代碼

    Python實現矩陣可視化的示例代碼

    matplotlib中提供了兩個矩陣可視化函數,分別是imshow和matshow,本文主要為大家詳細介紹了如何使用這兩個函數,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • 用python畫城市輪播地圖

    用python畫城市輪播地圖

    輪播地圖可以在很多方面有實際應用,所以就介紹給大家,并給出個實際操作案例,感興趣的朋友可以參考下
    2021-05-05

最新評論

阿拉善右旗| 华容县| 三门县| 海盐县| 潞城市| 绵竹市| 余干县| 北流市| 丁青县| 贵德县| 顺义区| 天祝| 油尖旺区| 辽宁省| 广昌县| 瑞昌市| 漳浦县| 长兴县| 阜阳市| 沁阳市| 疏附县| 镇康县| 阿拉善左旗| 镇江市| 财经| 永泰县| 金山区| 鹤庆县| 福建省| 手游| 罗山县| 尖扎县| 博兴县| 清水县| 和静县| 奉新县| 鹰潭市| 南华县| 乐亭县| 吉木萨尔县| 拜泉县|