ETH官方钱包

前往
大廳
主題

LeetCode - 2414. Length of the Longest Alphabetical Continuous Substring 解題心得

Not In My Back Yard | 2023-08-11 12:00:16 | 巴幣 0 | 人氣 100

題目連結(jié):


題目意譯:
一個(gè)連續(xù)字母字串為一個(gè)字串,其由字母表中的連續(xù)字母所組成。換句話說,其為字串 "abcdefghijklmnopqrstuvwxyz" 的一個(gè)子字串。

例如,"abc" 為一個(gè)連續(xù)字母字串;而 "acb" 和 "za" 則不是。

給定一個(gè)只由小寫字母所組成的字串 s,回傳最長(zhǎng)的連續(xù)字母子字串之長(zhǎng)度。

限制:
1 ≦ s.length ≦ 10 ^ 5
s 只由小寫英文字母所組成。



範(fàn)例測(cè)資:
範(fàn)例 1:
輸入: s = "abacaba"
輸出: 2
解釋: 有 4 個(gè)相異的連續(xù)子字串:"a" 、 "b" 、 "c" 和 "ab"。
"ab" 為最長(zhǎng)的連續(xù)子字串。

範(fàn)例 2:
輸入: s = "abcde"
輸出: 5
解釋: "abcde" 為最長(zhǎng)的連續(xù)子字串。


解題思維:
定義一陣列 D,其中 D[i] 代表著以 s[i] 作為結(jié)尾的最長(zhǎng)連續(xù)字母子字串之長(zhǎng)度。

可以看到其遞迴式為:
D[0] = 1(因?yàn)槭菃我蛔帜福?/div>
D[i] = D[i - 1] + 1,其中 s[i] = s[i - 1] + 1(代表 s[i] 在字母表中是接在 s[i - 1] 後面)、
D[i] = 1,其中 s[i] != s[i - 1] + 1(恰好與上式之情況相反)。

所以我們從 D[0] 開始推,得到所有 D[i] 之值後取最大值即為所求。




此次分享到此為止,如有任何更加簡(jiǎn)潔的想法或是有說明不清楚之地方,也煩請(qǐng)各位大大撥冗討論。

創(chuàng)作回應(yīng)

更多創(chuàng)作