亚欧色一区w666天堂,色情一区二区三区免费看,少妇特黄A片一区二区三区,亚洲人成网站999久久久综合,国产av熟女一区二区三区

  • 發布文章
  • 消息中心
點贊
收藏
評論
分享
原創

較大分組的位置-算法學習

2023-07-12 04:00:42
2
0

題目詳情:
在(zai)一個由小寫字母(mu)構成(cheng)的(de)字符串 s 中,包含由一些連續的(de)相同字符所構成(cheng)的(de)分(fen)組。

例如,在字符(fu)串 s = "abbxxxxzyy" 中,就(jiu)含有(you) "a", "bb", "xxxx", "z" 和 "yy" 這樣的一些分組。

分組可以用區(qu)間 [start, end] 表(biao)示(shi)(shi),其中 start 和 end 分別表(biao)示(shi)(shi)該分組的起始(shi)和終止位置的下標。上例中的 "xxxx" 分組用區(qu)間表(biao)示(shi)(shi)為 [3,6] 。

我們稱所有包含大于或等于三個連續字(zi)符(fu)的分組(zu)為 較(jiao)大分組(zu) 。

找到(dao)每(mei)一(yi)個 較大分組 的區間,按起始位置下標遞增順序(xu)排序(xu)后,返回(hui)結(jie)果。


示例:
輸入:s = "abbxxxxzzy"
輸出:[[3,6]]
解釋:"xxxx" 是一個(ge)起始(shi)于(yu) 3 且(qie)終止于(yu) 6 的較大分組。

解題思路:

首(shou)先,我們定(ding)義(yi)一(yi)個空數組 result 來(lai)存(cun)儲結(jie)果。然后,定(ding)義(yi)一(yi)個變量(liang) start 來(lai)記錄當前分組的起(qi)始位置(zhi)。

使用一個循(xun)環遍(bian)歷(li)字(zi)(zi)符(fu)串 s,從第二個字(zi)(zi)符(fu)開(kai)(kai)始(shi)(索(suo)引為1)。如果當(dang)(dang)前(qian)(qian)(qian)字(zi)(zi)符(fu)與前(qian)(qian)(qian)一個字(zi)(zi)符(fu)不相同(tong),或者已(yi)經遍(bian)歷(li)到(dao)了(le)字(zi)(zi)符(fu)串的(de)末尾(wei),則(ze)表(biao)示當(dang)(dang)前(qian)(qian)(qian)分(fen)(fen)組(zu)(zu)結束。我們(men)檢(jian)查當(dang)(dang)前(qian)(qian)(qian)分(fen)(fen)組(zu)(zu)的(de)長度(du)是否大(da)于等于3,如果是,則(ze)將(jiang)起(qi)始(shi)位(wei)置和結束位(wei)置的(de)下標(biao)構成的(de)區(qu)間 [start, i-1] 添(tian)加到(dao)結果數組(zu)(zu) result 中。然后,更新(xin) start 的(de)值為當(dang)(dang)前(qian)(qian)(qian)字(zi)(zi)符(fu)的(de)下標(biao),開(kai)(kai)始(shi)記錄新(xin)的(de)分(fen)(fen)組(zu)(zu)的(de)起(qi)始(shi)位(wei)置。

最后(hou),返回結果數組 result。


代碼實現:

function largeGroupPositions(s) {
    const result = [];
    let start = 0;

    for (let i = 1; i <= s.length; i++) {
        if (i === s.length || s[i] !== s[i - 1]) {
            if (i - start >= 3) {
                result.push([start, i - 1]);
            }
            start = i;
        }
    }

    return result;
}

// 示例輸入
const s = "abbxxxxzzy";

// 調用函數并輸出結果
console.log(largeGroupPositions(s));
0條評論
作者已關閉評論
t****m
98文(wen)章數
1粉絲數
t****m
98 文章(zhang) | 1 粉絲
t****m
98文章數
1粉絲數
t****m
98 文章(zhang) | 1 粉(fen)絲
原(yuan)創

較大分組的位置-算法學習

2023-07-12 04:00:42
2
0

題目詳情:
在一(yi)個由(you)小寫字(zi)母構(gou)成(cheng)的(de)字(zi)符(fu)串 s 中,包(bao)含由(you)一(yi)些連續的(de)相同字(zi)符(fu)所構(gou)成(cheng)的(de)分組。

例如(ru),在字符串 s = "abbxxxxzyy" 中(zhong),就含有 "a", "bb", "xxxx", "z" 和(he) "yy" 這樣的一些分(fen)組。

分組可以用(yong)區間(jian) [start, end] 表(biao)示(shi),其(qi)中 start 和 end 分別表(biao)示(shi)該分組的起始和終止位置的下標。上例中的 "xxxx" 分組用(yong)區間(jian)表(biao)示(shi)為 [3,6] 。

我們稱所(suo)有包含大(da)于或(huo)等于三個連續字符的分(fen)組(zu)為 較大(da)分(fen)組(zu) 。

找到每一個(ge) 較大(da)分組 的區間,按起始位(wei)置下標(biao)遞增順序排(pai)序后,返回結果(guo)。


示例:
輸入:s = "abbxxxxzzy"
輸出:[[3,6]]
解(jie)釋:"xxxx" 是一個起始(shi)于 3 且終止于 6 的較(jiao)大(da)分(fen)組。

解題思路:

首先,我們定義(yi)一個空數(shu)組(zu) result 來存儲(chu)結果。然后,定義(yi)一個變量 start 來記錄(lu)當前(qian)分(fen)組(zu)的起(qi)始位置。

使(shi)用一個循環遍歷(li)字符(fu)串 s,從(cong)第二(er)個字符(fu)開始(索引為1)。如果當(dang)前(qian)字符(fu)與前(qian)一個字符(fu)不相(xiang)同,或(huo)者已經遍歷(li)到了字符(fu)串的(de)末尾,則(ze)表示當(dang)前(qian)分組(zu)(zu)結束。我們檢查當(dang)前(qian)分組(zu)(zu)的(de)長度是(shi)(shi)否大于(yu)等于(yu)3,如果是(shi)(shi),則(ze)將起始位置和(he)結束位置的(de)下標(biao)構成的(de)區間(jian) [start, i-1] 添加到結果數組(zu)(zu) result 中。然后,更新(xin) start 的(de)值為當(dang)前(qian)字符(fu)的(de)下標(biao),開始記錄(lu)新(xin)的(de)分組(zu)(zu)的(de)起始位置。

最(zui)后,返回(hui)結果數組 result。


代碼實現:

function largeGroupPositions(s) {
    const result = [];
    let start = 0;

    for (let i = 1; i <= s.length; i++) {
        if (i === s.length || s[i] !== s[i - 1]) {
            if (i - start >= 3) {
                result.push([start, i - 1]);
            }
            start = i;
        }
    }

    return result;
}

// 示例輸入
const s = "abbxxxxzzy";

// 調用函數并輸出結果
console.log(largeGroupPositions(s));
文章來自個人專欄
文章 | 訂(ding)閱
0條評論
作者已關閉評論
作者已關閉評論
0
0