常見物件-在大串中查詢小串出現的次數案例

ZHOU_VIP發表於2017-05-11

思路:


package cn.itcast_07;

/*
 * 統計大串中小串出現的次數
 * 舉例:
 * 		在字串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
 * 結果:
 * 		java出現了5次
 * 
 * 分析:
 * 		前提:是已經知道了大串和小串。
 * 
 * 		A:定義一個統計變數,初始化值是0
 * 		B:先在大串中查詢一次小串第一次出現的位置
 * 			a:索引是-1,說明不存在了,就返回統計變數
 * 			b:索引不是-1,說明存在,統計變數++
 * 		C:把剛才的索引+小串的長度作為開始位置擷取上一次的大串,返回一個新的字串,並把該字串的值重新賦值給大串
 * 		D:回到B
 */
public class StringTest4 {
	public static void main(String[] args) {
		// 定義大串
		String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
		// 定義小串
		String minString = "java";

		// 寫功能實現
		int count = getCount(maxString, minString);
		System.out.println("Java在大串中出現了:" + count + "次");
	}

	/*
	 * 兩個明確: 返回值型別:int 引數列表:兩個字串
	 */
	public static int getCount(String maxString, String minString) {
		// 定義一個統計變數,初始化值是0
		int count = 0;

		// 先在大串中查詢一次小串第一次出現的位置
		int index = maxString.indexOf(minString);

		// 索引不是-1,說明存在,統計變數++
		while (index != -1) {
			count++;
			// 把剛才的索引+小串的長度作為開始位置擷取上一次的大串,返回一個新的字串,並把該字串的值重新賦值給大串
			int startIndex = index + minString.length();
			maxString = maxString.substring(startIndex);
			// 繼續查
			index = maxString.indexOf(minString);
		}

		return count;
	}
}

程式碼優化:


package cn.itcast_07;

/*
 * 統計大串中小串出現的次數
 * 舉例:
 * 		在字串"woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun"
 * 結果:
 * 		java出現了5次
 * 
 * 分析:
 * 		前提:是已經知道了大串和小串。
 * 
 * 		A:定義一個統計變數,初始化值是0
 * 		B:先在大串中查詢一次小串第一次出現的位置
 * 			a:索引是-1,說明不存在了,就返回統計變數
 * 			b:索引不是-1,說明存在,統計變數++
 * 		C:把剛才的索引+小串的長度作為開始位置擷取上一次的大串,返回一個新的字串,並把該字串的值重新賦值給大串
 * 		D:回到B
 */
public class StringTest5 {
	public static void main(String[] args) {
		// 定義大串
		String maxString = "woaijavawozhenaijavawozhendeaijavawozhendehenaijavaxinbuxinwoaijavagun";
		// 定義小串
		String minString = "java";

		// 寫功能實現
		int count = getCount(maxString, minString);
		System.out.println("Java在大串中出現了:" + count + "次");
	}

	/*
	 * 兩個明確: 返回值型別:int 引數列表:兩個字串
	 */
	public static int getCount(String maxString, String minString) {
		// 定義一個統計變數,初始化值是0
		int count = 0;

		/*
		// 先在大串中查詢一次小串第一次出現的位置
		int index = maxString.indexOf(minString);
		// 索引不是-1,說明存在,統計變數++
		while (index != -1) {
			count++;
			// 把剛才的索引+小串的長度作為開始位置擷取上一次的大串,返回一個新的字串,並把該字串的值重新賦值給大串
			// int startIndex = index + minString.length();
			// maxString = maxString.substring(startIndex);
			maxString = maxString.substring(index + minString.length());
			// 繼續查
			index = maxString.indexOf(minString);
		}
		*/
		
		int index;
		//先查,賦值,判斷
		while((index=maxString.indexOf(minString))!=-1){
			count++;
			maxString = maxString.substring(index + minString.length());
		}

		return count;
	}
}
 

相關文章