LeetCode简单题之较大分组的位置
題目
在一個由小寫字母構成的字符串 s 中,包含由一些連續的相同字符所構成的分組。
例如,在字符串 s = “abbxxxxzyy” 中,就含有 “a”, “bb”, “xxxx”, “z” 和 “yy” 這樣的一些分組。
分組可以用區間 [start, end] 表示,其中 start 和 end 分別表示該分組的起始和終止位置的下標。上例中的 “xxxx” 分組用區間表示為 [3,6] 。
我們稱所有包含大于或等于三個連續字符的分組為 較大分組 。
找到每一個 較大分組 的區間,按起始位置下標遞增順序排序后,返回結果。
示例 1:
輸入:s = “abbxxxxzzy”
輸出:[[3,6]]
解釋:“xxxx” 是一個起始于 3 且終止于 6 的較大分組。
示例 2:
輸入:s = “abc”
輸出:[]
解釋:“a”,“b” 和 “c” 均不是符合要求的較大分組。
示例 3:
輸入:s = “abcdddeeeeaabbbcd”
輸出:[[3,5],[6,9],[12,14]]
解釋:較大分組為 “ddd”, “eeee” 和 “bbb”
示例 4:
輸入:s = “aba”
輸出:[]
提示:
1 <= s.length <= 1000
s 僅含小寫英文字母
來源:力扣(LeetCode)
解題思路
??搜尋字符串中連續相等三個以上字符的子字符串有多少個。"([a-z])\1{2,}",搜索任意小寫字母,當定位到任意一個小寫字母,繼續查找后續和當前小寫字母一樣的2個以上字符。
class Solution:def largeGroupPositions(self, s: str) -> List[List[int]]:return [[i.span()[0],i.span()[1]-1] for i in re.finditer(r'([a-z])\1{2,}',s)]
總結
以上是生活随笔為你收集整理的LeetCode简单题之较大分组的位置的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: LeetCode简单题之作为子字符串出现
- 下一篇: Python如何调用matlab函数?