2018年6月19日 星期二

[LeetCode] 830. Positions of Large Groups

轉自LeetCode

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 的定義,是的話就記錄下來。然後不論區間是不是答案之一,都要更新固定的位置,以用來做新的比對
code 如下

Java(參考解法)

沒有留言:

張貼留言