Categorygithub.com/xxxVitoxxx/leetcode395.longest_substring_with_at_least_K_repeating_characters
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 中求長度)。