No7. 字符串匹配

注意: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;
}

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章