栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C# > C#教程

算法练习之从String.indexOf的模拟实现开始

C#教程 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

算法练习之从String.indexOf的模拟实现开始

String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找

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

 
  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; 
  } 
 
   
  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; 
  } 
 
   
  public List indexOf(String str, String pattern) { 
    List indexs = new ArrayList(); 
    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方法实际上就是调用的String.indexOf实现

 
  public boolean contains(String str, String pattern) { 
    return firstIndexOf(str, pattern) != -1; 
  } 

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/125785.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号