您好,登錄后才能下訂單哦!
這篇文章主要講解了“l(fā)eetcode怎么判斷較大分組的位置”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“l(fā)eetcode怎么判斷較大分組的位置”吧!
在一個(gè)由小寫(xiě)字母構(gòu)成的字符串 s 中,包含由一些連續(xù)的相同字符所構(gòu)成的分組。
例如,在字符串 s = "abbxxxxzyy" 中,就含有 "a", "bb", "xxxx", "z" 和 "yy" 這樣的一些分組。
分組可以用區(qū)間 [start, end] 表示,其中 start 和 end 分別表示該分組的起始和終止位置的下標(biāo)。上例中的 "xxxx" 分組用區(qū)間表示為 [3,6] 。
我們稱(chēng)所有包含大于或等于三個(gè)連續(xù)字符的分組為 較大分組 。
找到每一個(gè) 較大分組 的區(qū)間,按起始位置下標(biāo)遞增順序排序后,返回結(jié)果。
示例 1:
輸入:s = "abbxxxxzzy"
輸出:[[3,6]]
解釋?zhuān)?quot;xxxx" 是一個(gè)起始于 3 且終止于 6 的較大分組。
示例 2:
輸入:s = "abc"
輸出:[]
解釋?zhuān)?quot;a","b" 和 "c" 均不是符合要求的較大分組。
示例 3:
輸入:s = "abcdddeeeeaabbbcd"
輸出:[[3,5],[6,9],[12,14]]
解釋?zhuān)狠^大分組為 "ddd", "eeee" 和 "bbb"
示例 4:
輸入:s = "aba"
輸出:[]
利用字典存儲(chǔ)每個(gè)字母連續(xù)的區(qū)間,其中每個(gè)字母對(duì)應(yīng)的value值的第一個(gè)元素作為是否是當(dāng)前字母的標(biāo)志,結(jié)果集里存儲(chǔ)長(zhǎng)度為3的區(qū)間即可。
class Solution: def largeGroupPositions(self, s: str) -> list: s_dict = {} for i in range(len(s)): if i != 0: if s[i] != s[i - 1]: s_dict[s[i - 1]][0] = 0 if len(s_dict[s[i - 1]][-1]) != 2: s_dict[s[i - 1]][-1].pop() if s[i] not in s_dict: s_dict[s[i]] = [1, [i]] else: if len(s_dict[s[i]][-1]) >= 2: if s_dict[s[i]][0] != 0: s_dict[s[i]][-1].pop(-1) s_dict[s[i]][-1].append(i) else: s_dict[s[i]].append([i]) else: s_dict[s[i]][-1].append(i) s_dict[s[i]][0] = 1 # print(s_dict) res = [] for k, v in s_dict.items(): for j in range(1, len(v)): if len(v[j]) == 2: if v[j][1] - v[j][0] >= 2: res.append([v[j][0], v[j][1]]) sorted_res = sorted(res, key=lambda x: x[0]) return sorted_res if __name__ == '__main__': s = "abcdddeeeeaabbbcd" ss = Solution() ans = ss.largeGroupPositions(s) print(ans)
感謝各位的閱讀,以上就是“l(fā)eetcode怎么判斷較大分組的位置”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)leetcode怎么判斷較大分組的位置這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。