題目連結(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)各位大大撥冗討論。