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

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

 更新時間:2014年12月25日 14:24:28   投稿:mdxy-dxy  
這篇文章主要介紹了算法練習(xí)從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)文章

最新評論

门头沟区| 建德市| 临清市| 赫章县| 潼关县| 上林县| 同心县| 云安县| 高台县| 武冈市| 余干县| 遂宁市| 大宁县| 额尔古纳市| 大同县| 溧阳市| 青阳县| 三门县| 华池县| 东丰县| 昂仁县| 永嘉县| 宜宾市| 托克托县| 芜湖县| 秦皇岛市| 双流县| 启东市| 巴林左旗| 安多县| 衢州市| 侯马市| 金昌市| 象州县| 许昌市| 长泰县| 界首市| 西昌市| 大兴区| 分宜县| 江津市|