package
0.0.0-20241020153809-77720808be6c
Repository: https://github.com/xxxvitoxxx/leetcode.git
Documentation: pkg.go.dev
# README
solution
思路一
用 two pointer 思路若要檢查 substring 中的所有字母是否有大於等於 k ,會導致右邊的指針會因為多了新的字母而一直向右擴展(為了確認右邊是否還有新字母而沒有盡頭)。
k = 2, [ a, a, b, b, c, d, f]
因為 s 都是小寫字母,可以先計算出不重複的字母有幾個,以上述例子有 5 個(a, b, c, d, f),假設 substring 最多只能有 1~5 個不重複的字母,這樣指針在向右擴展時就能有中斷點,不會一直向右擴展。
寫一個 helper 函式檢查在 substring 只能有 1~5 個不同的字母的情況最大長度是多少。
思路二
假設 O 是在 s 中出現的次數小於 k 的字母,而 X 是出現的次數大於等於 k 的字母,那我只要計算 全部都是 X 的 substring 長度即可。可以用 recursion 處理。
[ O {X X} O {X X X} O {X X X}]
思路三
類似思路二,用分治法將大問題分成小問題(在所有字母重複大於等於 k 的 substring 中求長度)。