91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

leetcode怎么判斷較大分組的位置

發布時間:2021-12-15 14:38:07 來源:億速云 閱讀:137 作者:iii 欄目:大數據

這篇文章主要講解了“leetcode怎么判斷較大分組的位置”,文中的講解內容簡單清晰,易于學習與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學習“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"
輸出:[]

二、解題思路

利用字典存儲每個字母連續的區間,其中每個字母對應的value值的第一個元素作為是否是當前字母的標志,結果集里存儲長度為3的區間即可。

三、代碼

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)

感謝各位的閱讀,以上就是“leetcode怎么判斷較大分組的位置”的內容了,經過本文的學習后,相信大家對leetcode怎么判斷較大分組的位置這一問題有了更深刻的體會,具體使用情況還需要大家實踐驗證。這里是億速云,小編將為大家推送更多相關知識點的文章,歡迎關注!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

长垣县| 阿合奇县| 宽城| 洛南县| 若尔盖县| 绥芬河市| 沙田区| 通江县| 太湖县| 嘉黎县| 泰顺县| 普宁市| 海淀区| 南陵县| 隆安县| 乌恰县| 阿克| 通化县| 南昌市| 富宁县| 库尔勒市| 峨边| 建水县| 商城县| 龙岩市| 延寿县| 苏尼特左旗| 土默特右旗| 军事| 南溪县| 济宁市| 巴楚县| 乐清市| 呼图壁县| 溆浦县| 阳曲县| 布拖县| 鞍山市| 吉隆县| 阜康市| 侯马市|