Leetcode 1759 - Count Number of Homogenous Substrings

題目

Problem#

給你一個字串 s 要你回傳所有 homogeneous 的子字串的個數總和。homogenous 指的是字串裡的所有字元都一樣。
答案可能很大要 mod $10^9+7$

測資限制#

  • $1 \le n \le 10^5$

想法#

題目要求所有同字元子字串的個數總和,對於字串 aaa 來說,他有 a, aa, aaa 這三個同字元子字串,分別出現 3, 2, 1 次,答案是 $3+2+1=6$,可以觀察發現答案是從 1 累加到子字串長度,也就是 (1+n)*n/2。當前個字元與當前字元不同時,我們就知道目前子字串的最大長度,所以題目就變成了,找出所有子字串長度,接著帶入公式累加即可。

AC Code#

  • 時間複雜度: $\mathcal{O}(n)$
  • 空間複雜度: $\mathcal{O}(1)$