Python 中大塊的位置
假設有一個小寫字母字串 S,這些字母形成連續的相同字元組。因此,當一個字串像 S 一樣像“abbxxxxzyy”時,則有組“a”、“bb”、“xxxx”、“z”和“yy”。當組中有 3 個或更多字元時,該組將是大組。我們想要每個大組的起始位置和結束位置。
因此,如果輸入像“abcdddeeeeaabbbcd”一樣,則輸出將是 [[3,5],[6,9],[12,14]]
為了解決這個問題,我們將遵循以下步驟 -
- ans := 新列表
- csum := 0
- 對於每個帶有連續字母的字母的 a、b 對,執行
- grp := 分組的專案列表
- 如果 grp 的大小 >= 3,則
- 將包含 (csum,csum + grp 的大小 - 1) 的列表插入到 ans 中
- csum := csum + grp 的大小
- 返回 ans
讓我們看看以下實現以加深理解 -
示例
from itertools import groupby
class Solution:
def largeGroupPositions(self, S):
ans = []
csum = 0
for a, b in groupby(S):
grp = list(b)
if len(grp) >= 3:
ans.append([csum, csum+len(grp)-1])
csum+=len(grp)
return ans
ob = Solution()
print(ob.largeGroupPositions("abcdddeeeeaabbbcd"))輸入
"abcdddeeeeaabbbcd"
輸出
[[3, 5], [6, 9], [12, 14]]
廣告
資料結構
網路
RDBMS
作業系統
Java
iOS
HTML
CSS
Android
Python
C 程式設計
C++
C#
MongoDB
MySQL
Javascript
PHP