bl双性强迫侵犯h_国产在线观看人成激情视频_蜜芽188_被诱拐的少孩全彩啪啪漫画

刷爆力扣之較大分組的位置-創新互聯

刷爆力扣之較大分組的位置

HELLO,各位看官大大好,我是阿呆 🙈🙈🙈
工作原因拖更些時日,今天阿呆繼續記錄下力扣刷題過程,收錄在專欄算法中 😜😜😜

成都創新互聯專注于烏拉特中網站建設服務及定制,我們擁有豐富的企業做網站經驗。 熱誠為您提供烏拉特中營銷型網站建設,烏拉特中網站制作、烏拉特中網頁設計、烏拉特中網站官網定制、成都微信小程序服務,打造烏拉特中網絡公司原創品牌,更為您提供烏拉特中網站排名全網營銷落地服務。

請添加圖片描述

該專欄按照不同類別標簽進行刷題,每個標簽又分為 Easy、Medium、Hard 三個等級 👊👊👊

本部分所有題目均來自于LeetCode 網,并于每道題目下標明具體力扣網原題鏈接 🏃🏃🏃

OK,兄弟們,廢話不多直接上題,沖沖沖 🌞🌞🌞


一 🏠 題目描述

830. 較大分組的位置

在一個由小寫字母構成的字符串s中,包含由一些連續的相同字符所構成的分組

例如,在字符串s = "abbxxxxzyy"中,就含有"a","bb","xxxx","z""yy"這樣的一些分組

分組可以用區間[start, end]表示,其中startend分別表示該分組的起始和終止位置的下標。上例中的"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僅含小寫英文字母

二 🏠破題思路 2.1 🚀 關鍵信息

解決問題第一步,當然先提取題目字面上的關鍵信息 😎😎😎

稱包含大于或等于三個連續字符的分組為較大分組 = 連續意味著前者和后者進行比較 🌷🌷🌷


提取完題目中的關鍵信息后,直接進入第二階段,思路整理 😃😃😃


2.2 🚀 思路整理

一次遍歷

① 遍歷該序列,并記錄當前分組長度

② 如果下一個字符與當前字符不同,或者已遍歷至字符串尾部

③ 且該分組長度大于等于 3,則將其加入結果集 🌸🌸🌸


整理完解題思路后,直接進入第三階段,代碼實現 😃😃😃


三 🏠 代碼詳解 3.1 🚀 代碼實現

按照我們剛才的破題思路,直接代碼走起來 👇👇👇👇

class Solution {
public:
    vector>largeGroupPositions(string s) {
        vector>ret; //定義結果集
        int n = s.size(); //初始化字符串長度
        int num = 1; //定義分組長度
        for (int i = 0; i< n; i++) {
            if (i == n - 1 || s[i] != s[i + 1]) { //若遍歷至結尾或當前字符與下一個不一致
                if (num >= 3) ret.push_back({i - num + 1, i}); //且分組長度為3,則記錄
                num = 1; //將分組長度重置
            } else {
                num++; //當前字符與下一個一致,將分組長度加加
            }
        }
        return ret; //返回結果集
    }
};

3.2 🚀 細節解析

看完 👀👀👀 全注釋版的代碼實現后,相信看官大大對整體邏輯已經是大寫的 OK 了 😃😃😃

那么我們挖掘上述實現的晦澀細節 😖😖😖 進行解析,直接開干,走起來 👇👇👇👇

if (i == n - 1 || s[i] != s[i + 1]) //若遍歷至結尾或當前字符與下一個不一致

對于結尾的特殊處理,也可在循環外進行

很直白的題,無特殊點,核心是看到連續就應聯想到前者和后者比較 🐳🐳🐳


四 🏠 心路歷程

為方便各位看官大大了解博主真實刷題過程,我把當時狀態純純真實還原,記錄在心路歷程這一小節,不感興趣的小伙伴可以直接跳過哈

博主在第一階段提取 🚀 關鍵信息沒有問題,在第二階段 🚀 思路整理未聯想到前者和后者比較 😭😭😭

代碼實現時未聯想到i - num + 1,即為前者索引(front);未聯想到前者和后者比較,使用了移動字符代替(moveElemOfStr)簡潔性差 ,代碼如下 👇👇👇👇

vector>largeGroupPositions(string s) {
        std::vector>res;

        int len = s.size(), front = 0, count = 0;
        char moveElemOfStr = ' ';
        for (int i = 0; i< len; ++i) {
            if (s[i] != moveElemOfStr) { //若當前位置不再連續
                if (count >= 3) {
                    res.push_back({front, i - 1}); //若連續的元素超過三個
                }

                front = i; //記錄連續元素的開始索引
                count = 1; //表示連續個數為 1
                moveElemOfStr = s[i]; //記錄連續元素值
            } else {
                ++count;
            }

            if (i == len - 1 && count >= 3) res.push_back({front, i});
        }

        return std::move(res);
    }

五 🏠 結語

身處于這個浮躁的社會,卻有耐心看到這里,你一定是個很厲害的人吧 👍👍👍

如果各位看官大大覺得文章有幫助的話,別忘了點贊 + 關注哦,你們的鼓勵就是我大的動力

博主還會不斷更新更優質的內容,加油吧!技術人! 💪💪💪

你是否還在尋找穩定的海外服務器提供商?創新互聯www.cdcxhl.cn海外機房具備T級流量清洗系統配攻擊溯源,準確流量調度確保服務器高可用性,企業級服務器適合批量采購,新人活動首月15元起,快前往官網查看詳情吧

網站欄目:刷爆力扣之較大分組的位置-創新互聯
本文鏈接:http://vcdvsql.cn/article24/dsdgce.html

成都網站建設公司_創新互聯,為您提供網站制作全網營銷推廣、品牌網站建設電子商務、微信公眾號、網站改版

廣告

聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯

網站建設網站維護公司