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

算法練習之從String.indexOf的模擬實現(xiàn)開始

 更新時間:2014年12月25日 14:24:28   投稿:mdxy-dxy  
這篇文章主要介紹了算法練習從String.indexOf的模擬實現(xiàn)開始,需要的朋友可以參考下

String.indexOf的模擬實現(xiàn),沒想象中有多么高深的查找算法,就是最普通的遍歷查找

思路:先找到第一個相同的字符,然后依次比較后面的字符,若都相等則表示查找成功

/** 
   * 查找字符串pattern在str中第一次出現(xiàn)的位置 
   * @param str 
   * @param pattern 
   * @return 
   */ 
  public int firstIndexOf(String str, String pattern) { 
    for (int i = 0; i < (str.length() - pattern.length()); i++) { 
      int j = 0; 
      while (j < pattern.length()) { 
        if (str.charAt(i + j) != pattern.charAt(j)) break; 
        j++; 
      } 
      if(j==pattern.length()) return i; 
    } 
    return -1; 
  } 
 
  /** 
   * 查找字符串pattern在str中最后一次出現(xiàn)的位置 
   * @param str 
   * @param pattern 
   * @return 
   */ 
  public int lastIndexOf(String str, String pattern) { 
    for (int i = str.length() - pattern.length(); i >= 0; i--) { 
      int j = 0; 
      while (j < pattern.length()) { 
        if (str.charAt(i + j) != pattern.charAt(j)) break; 
        j++; 
      } 
      if (j == pattern.length()) return i; 
    } 
    return -1; 
  } 
 
  /** 
   * 查找字符串pattern在str中出現(xiàn)的位置 
   * @param str 
   * @param pattern 
   * @return 
   */ 
  public List<Integer> indexOf(String str, String pattern) { 
    List<Integer> indexs = new ArrayList<Integer>(); 
    for (int i = 0; i < (str.length() - pattern.length()); i++) { 
      int j = 0; 
      while (j < pattern.length()) { 
        if (str.charAt(i + j) != pattern.charAt(j)) break; 
        j++; 
      } 
      if (j == pattern.length()) indexs.add(i); 
    } 
    return indexs; 
  } 

同樣更常用的String.contains方法實際上就是調(diào)用的String.indexOf實現(xiàn)

/** 
   * 判斷字符串pattern在str中是否存在 
   * @param str 
   * @param pattern 
   * @return 
   */ 
  public boolean contains(String str, String pattern) { 
    return firstIndexOf(str, pattern) != -1; 
  } 

相關(guān)文章

  • c#生成高清縮略圖的二個示例分享

    c#生成高清縮略圖的二個示例分享

    這篇文章主要介紹了c#生成高清縮略圖的二個示例,需要的朋友可以參考下
    2014-04-04
  • Oracle中for循環(huán)的使用方法

    Oracle中for循環(huán)的使用方法

    這篇文章介紹了Oracle中for循環(huán)的使用方法,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • 基于C#編寫一個遠程桌面應(yīng)用

    基于C#編寫一個遠程桌面應(yīng)用

    封閉環(huán)境無法拷貝外來的遠程桌面軟件,所以這篇文章小編就來帶大家用C#編寫一個簡單的遠程桌面應(yīng)用,感興趣的小伙伴可以跟隨小編一起學習一下
    2023-10-10
  • C#在PDF中繪制不同風格類型的文本方法實例

    C#在PDF中繪制不同風格類型的文本方法實例

    這篇文章主要給大家介紹了關(guān)于C#在PDF中繪制不同風格類型的文本的相關(guān)資料,文中通過圖文以及示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2018-07-07
  • C#讀取XML的三種實現(xiàn)方式

    C#讀取XML的三種實現(xiàn)方式

    XML文件是一種常用的文件格式,本篇文章主要介紹了C#讀取XML的三種實現(xiàn)方式,主要是XmlDocument、XmlTextReader、Linq to Xml,有興趣的可以了解一下。
    2017-02-02
  • winform實現(xiàn)限制及解除鼠標移動范圍的方法

    winform實現(xiàn)限制及解除鼠標移動范圍的方法

    這篇文章主要介紹了winform實現(xiàn)限制及解除鼠標移動范圍的方法,涉及C#控制WinForm鼠標事件屬性的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-09-09
  • C#實現(xiàn)百度ping推送功能的方法

    C#實現(xiàn)百度ping推送功能的方法

    百度ping是網(wǎng)站優(yōu)化必做的事情,這樣才能主動推送給百度,那么基于代碼是如何實現(xiàn)百度推送方法呢?下文小編給大家?guī)砹薈#實現(xiàn)百度ping推送功能的方法,非常不錯,感興趣的朋友一起學習吧
    2016-08-08
  • C#調(diào)用接口的四種方式介紹

    C#調(diào)用接口的四種方式介紹

    這篇文章介紹了C#調(diào)用接口的四種方式,文中通過示例代碼介紹的非常詳細。對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-06-06
  • Question:基于C#連續(xù)賦值的面試題(解答)

    Question:基于C#連續(xù)賦值的面試題(解答)

    本篇文章是對C#中連續(xù)賦值的面試題進行了解答,需要的朋友參考下
    2013-05-05
  • c#注冊表操作類分享

    c#注冊表操作類分享

    這篇文章主要介紹了c#注冊表操作類,主要包括創(chuàng)建注冊表項、讀取注冊表項、判斷注冊表項是否存在、刪除注冊表項、創(chuàng)建注冊表鍵值 、讀取注冊表鍵值、判斷注冊表鍵值是否存在、刪除注冊表鍵值等功能,需要的朋友可以參考下
    2014-03-03

最新評論