算法练习之从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 生日广州男生祝福语简短