leetcode 830 較大分組的位置

2021-10-14 01:12:30 字數 1178 閱讀 3019

較大分組的位置

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

例如,在字串 s = 「abb***xzyy」 中,就含有 「a」, 「bb」, 「***x」, 「z」 和 「yy」 這樣的一些分組。

分組可以用區間 [start, end] 表示,其中 start 和 end 分別表示該分組的起始和終止位置的下標。上例中的 「***x」 分組用區間表示為 [3,6] 。

我們稱所有包含大於或等於三個連續字元的分組為 較大分組 。

找到每乙個 較大分組 的區間,按起始位置下標遞增順序排序後,返回結果。

示例 1:

輸入:s =

"abb***xzzy"

輸出:[

[3,6]

]解釋:"***x" 是乙個起始於 3 且終止於 6 的較大分組。

示例 2:

輸入:s =

"abc"

輸出:[

]解釋:"a","b" 和 "c" 均不是符合要求的較大分組。

示例 3:

輸入:s =

"abcdddeeeeaabbbcd"

輸出:[

[3,5],[6,9],[12,14]

]解釋:較大分組為 "ddd", "eeee" 和 "bbb"

示例 4:

輸入:s =

"aba"

輸出:[

]

1 <= s.length <= 1000

s 僅含小寫英文本母

思路:

定義乙個指標i從頭開始遍歷字串,同時再定義乙個指標j從當前位置開始向後遍歷,同時維護乙個計數器count,初值為0,當s[j]與s[i]字元不同的時候j停止移動,則count為j與i之間的字元個數即為「分組」中字元的個數,如果count>=3,則將儲存進答案中。之後將i移動至j的位置,繼續向後遍歷,直到字串末尾。

ac**(c++):

class

solution

else}if

(count >=3)

);} i = j;

}return ans;}}

;

leetcode 830 較大分組的位置

在乙個由小寫字母構成的字串 s 中,包含由一些連續的相同字元所構成的分組。例如,在字串 s abb xzyy 中,就含有 a bb x z 和 yy 這樣的一些分組。我們稱所有包含大於或等於三個連續字元的分組為較大分組。找到每乙個較大分組的起始和終止位置。最終結果按照字典順序輸出。示例 1 輸入 a...

LeetCode 830 較大分組的位置

在乙個由小寫字母構成的字串 s 中,包含由一些連續的相同字元所構成的分組。例如,在字串 s abb xzyy 中,就含有 a bb x z 和 yy 這樣的一些分組。我們稱所有包含大於或等於三個連續字元的分組為較大分組。找到每乙個較大分組的起始和終止位置。最終結果按照字典順序輸出。示例 1 輸入 a...

leetCode 830 較大分組的位置

使用乙個變數num記錄當前分組的長度num初始值為1,如果當前字元與之前的字元不同或者當前遍歷到了陣列尾部則判斷num的大小如果num 3,則加入答案,其他情況使num class solution num 1 else return res 利用雙指標記錄陣列每一段的長度,如果當前分組的長度大於等...