In a string S of lowercase letters, these letters form consecutive groups of the same character.
For example, a string like S = "abbxxxxzyy" has the groups "a" , "bb" , "xxxx" , "z" and "yy" .
Call a group large if it has 3 or more characters. We would like the starting and ending positions of every large group.
The final answer should be in lexicographic order.
Example 1:
Input: "abbxxxxzzy" Output: [[3,6]] Explanation:"xxxx" is the single large group with starting 3 and ending positions 6.
Example 2:
Input: "abc" Output: [] Explanation: We have "a","b" and "c" but no large group.
Example 3:
Input: "abcdddeeeeaabbbcd" Output: [[3,5],[6,9],[12,14]]
Note: 1 <= S.length <= 1000
<Solution>想法如下
- 通常 String 找區間的題目,可以先用雙指標來思考一下
- 先固定一個位置,然後開始歷遍。當遇到不同字元時,檢查當下的區間是不是符合 group 的定義,是的話就記錄下來。然後不論區間是不是答案之一,都要更新固定的位置,以用來做新的比對
Java(參考解法)
沒有留言:
張貼留言