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
A:
class Solution { public: vector<vector<int>> largeGroupPositions(string S) { vector<vector<int>> res; int start = 0, n = S.length(); while(start < n){ int end = start; while(end < n && S[end] == S[start]){ //loop untill end is NOT same with start ++end; } if(end - start >=3){ vector<int> tmp{start,end-1}; res.push_back(tmp); } start = end; } return res; } };
这都能写出错来,真的是无可饶恕。
-------------------end 一开始定义不明。 搞出bug来了
No comments:
Post a Comment