欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

算法練習(xí)之從String.indexOf的模擬實(shí)現(xiàn)開(kāi)始

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

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

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

/** 
   * 查找字符串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方法實(shí)際上就是調(diào)用的String.indexOf實(shí)現(xiàn)

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

相關(guān)文章

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

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

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

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

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

    基于C#編寫一個(gè)遠(yuǎn)程桌面應(yīng)用

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

    C#在PDF中繪制不同風(fēng)格類型的文本方法實(shí)例

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

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

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

    winform實(shí)現(xiàn)限制及解除鼠標(biāo)移動(dòng)范圍的方法

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

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

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

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

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

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

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

    c#注冊(cè)表操作類分享

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

最新評(píng)論