1438. 较大分组的位置(回顾)

1438. 较大分组的位置

中文English

在一个由小写字母构成的字符串 S 中,包含由一些连续的相同字符所构成的分组。

例如,在字符串 S = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy"这样的一些分组。

我们称所有包含大于或等于三个连续字符的分组为较大分组。找到每一个较大分组的起始和终止位置。

最终结果按照字典顺序输出。

样例

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]]

注意事项

1 <= S.length <= 1000

 
 
输入测试数据 (每行一个参数)如何理解测试数据?
class Solution:
    '''
    大致思路:
    1.初始化res = [],外层循环,给定初始值i= 0,c =1计数,以及l=0,代表的是左边的索引,flag= False,代表的是如果没有找到符合条件的,否则找到大于等于3的
    2.循环,如果c==2,则说明符合,记录左边的索引。然后c+=1,一直到下一个值不符合的时候为止,c=1,重置。如果flag=True,则说明到临界值,写入res里面,重置
    '''
    def largeGroupPositions(self,S):
        res = []
        i = 0
        c = 1
        l = 0
        flag = False
        S = S + ' '
        while i < len(S) - 1:   
            if S[i] == S[i+1]:
                print(S[i],S[i+1],c,i)
                if c == 2:
                    flag = True
                    l = i - 1
                c += 1
            else:
                c = 1
                if flag == True:
                    res.append([l,i])
                    flag = False      
            i += 1
        return res

 

posted @ 2020-04-25 15:36  风不再来  阅读(127)  评论(0编辑  收藏  举报