算法练习之从String.indexOf的模拟实现开始
String.indexOf的模拟实现,没想象中有多么高深的查找算法,就是最普通的遍历查找
思路:先找到第一个相同的字符,然后依次比较后面的字符,若都相等则表示查找成功
/**
*查找字符串pattern在str中第一次出现的位置
*@paramstr
*@parampattern
*@return
*/
publicintfirstIndexOf(Stringstr,Stringpattern){
for(inti=0;i<(str.length()-pattern.length());i++){
intj=0;
while(j<pattern.length()){
if(str.charAt(i+j)!=pattern.charAt(j))break;
j++;
}
if(j==pattern.length())returni;
}
return-1;
}
/**
*查找字符串pattern在str中最后一次出现的位置
*@paramstr
*@parampattern
*@return
*/
publicintlastIndexOf(Stringstr,Stringpattern){
for(inti=str.length()-pattern.length();i>=0;i--){
intj=0;
while(j<pattern.length()){
if(str.charAt(i+j)!=pattern.charAt(j))break;
j++;
}
if(j==pattern.length())returni;
}
return-1;
}
/**
*查找字符串pattern在str中出现的位置
*@paramstr
*@parampattern
*@return
*/
publicList<Integer>indexOf(Stringstr,Stringpattern){
List<Integer>indexs=newArrayList<Integer>();
for(inti=0;i<(str.length()-pattern.length());i++){
intj=0;
while(j<pattern.length()){
if(str.charAt(i+j)!=pattern.charAt(j))break;
j++;
}
if(j==pattern.length())indexs.add(i);
}
returnindexs;
}
同样更常用的String.contains方法实际上就是调用的String.indexOf实现
/**
*判断字符串pattern在str中是否存在
*@paramstr
*@parampattern
*@return
*/
publicbooleancontains(Stringstr,Stringpattern){
returnfirstIndexOf(str,pattern)!=-1;
}热门推荐
10 祝女儿简短祝福语大全
11 大学新年祝福语简短创意
12 元旦适合的祝福语简短
13 朋友出远门祝福语简短
14 初六简短的祝福语
15 祝男孩生日祝福语简短
16 同事调离的祝福语简短
17 拜年红包的祝福语简短
18 妈妈生日祝福语简短励志