注意:String類中已提供了字符串匹配的API,現模擬該API實現
目錄
- 子串查詢函數
- 查詢源串中的所有子串
- 跳過整個子串
- 跳過單個字符
一、子串查詢函數
/**
* 自定義子串查詢
* String有自己的API:str.indexOf("xxx",0)
* @param a 源串
* @param b 目的串
* @param index 從該參數開始查詢
* @return
*/
private static int findSubString1(String a, String b, int index) {
String tempStr = a.substring(index);
int len1 = tempStr.length();
int len2 = b.length();
char[] source = tempStr.toCharArray();
char[] target = b.toCharArray();
if (len2 > len1){
return -1;
}
int i = 0, j = 0, k = 0;
while (k < len1 && j < len2) {
if(source[k]!=target[j]){
k++;
continue;
}
i = k;
while(j < len2){
i++;
j++;
if(j==len2){
return k+index;
}
if(source[i]==target[j]){
continue;
}else{
j = 0;
k++;
break;
}
}
}
return -1;
}
二、查詢所有子串
/**
* 查詢所有子串
* @param source
* @param target
* @return
*/
private static int findAllSubString(String source, String target){
int pos = 0;
int total = 0;
// source.indexOf(target,pos)
while((pos=findSubString1(source,target,pos))>0){
System.out.println(pos);
// pos++
pos += target.length();
}
return total;
}