較大分組位置

在一個由小寫字母構成的字元串 s 中,包含由一些連續的相同字元所構成的分組。

例如,在字元串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z""yy" 這樣的一些分組。
分組可以用區間[start, end]表示,其中startend 分別表示該分組的起始和終止位置的下標。上例中的 "xxxx" 分組用區間表示為 [3,6]。我們稱所有包含大於或等於三個連續字元的分組為較大分組 。找到每一個 較大分組 的區間,按起始位置下標遞增順序排序後,返回結果。

解題思路

遍歷目標字元串s:

1、查找連續相同字元的個數(設置查詢的左邊界)
2、只有連續相同字元數 >= 3時,才能錄入結果數組
3、改變左邊界的值

class find_index{
	public ArrayList find(String s) {
		ArrayList res=new ArrayList();
		int left=0;
		while(left<s.length()) {
			int count=0;//來計數有幾個連續相同的字元(放在裡面和外面簡直兩種演算法)
			while(left+count<s.length() && s.charAt(left)==s.charAt(left+count)) {
				count++;
			}
			if(count>=3) {
				res.add(Arrays.asList(left,left+count-1));
			}
			left=left+count;
		}
		return res;
	}
}

快去 Leetcode 刷題吧!!