較大分組位置
- 2021 年 1 月 5 日
- 筆記
- leetcode每日一刷
在一個由小寫字母構成的字符串 s
中,包含由一些連續的相同字符所構成的分組。
例如,在字符串 s = "abbxxxxzyy"
中,就含有 "a"
, "bb"
, "xxxx"
, "z"
和 "yy"
這樣的一些分組。
分組可以用區間[start, end]
表示,其中start
和 end
分別表示該分組的起始和終止位置的下標。上例中的 "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;
}
}