版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/qq_21275321/article/details/83184679
题目:
In a string
S
of lowercase letters, these letters form consecutive groups of the same character.
For example, a string likeS = "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 singlelarge 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
解释:
其实就是对指针操作的经典题目。
python代码:
class Solution:
def largeGroupPositions(self, S):
"""
:type S: str
:rtype: List[List[int]]
"""
result=[]
i=0
while i<len(S):
j=i
letter=S[i]
while j+1<len(S) and S[j+1]==letter:
j+=1
if j-i>=2:
result.append([i,j])
i=j+1
return result
c++代码:
class Solution {
public:
vector<vector<int>> largeGroupPositions(string S) {
vector<vector<int>> result;
int i=0;
while (i<S.size())
{
int j=i;
char letter=S[i];
while (j+1<S.size() &&S[j+1]==letter)
j++;
if(j-i>=2)
result.push_back({i,j});
i=j+1;
}
return result;
}
};
总结:
对指针的经典操作。