Problem#
給定一個字串,問你如果把字串分組,靠得近的分在同一組,組數越少越好,要你回傳分組狀態
1 | ababcbacadefegdehijhklij => [9, 7, 8] |
想法#
如何找組的結尾?看每個字母最後出現的位置(last
),假如第 i 個字母的最後出現就是自己時(即 i == last[i]
),則代表碰到了該組的結尾。
先建好字母對最後出現 index 的表,接著掃一遍,碰到結尾紀錄組大小,更新左界右界即可。
- 時間複雜度: $\mathcal{O}(n)$
- 空間複雜度: $\mathcal{O}(1)$