【Leetcode】1180. Count Substrings with Only One Distinct Letter
題目地址:
https://leetcode.com/problems/count-substrings-with-only-one-distinct-letter/
給定一個字串 s s s,問其有多少個只含同一個字元的子串。
對於一個長 l l l的且只含一種字元的字串,其子串個數應該是 ∑ i = 1 l i = ( 1 + l ) l 2 \sum _{i=1}^{l}i=\frac{(1+l)l}{2} ∑i=1li=2(1+l)l(這可以理解為列舉子串開頭字元然後累加)。所以只需要每次擷取出 s s s中只含同一個字元的子串然後累加即可。程式碼如下:
public class Solution {
public int countLetters(String S) {
int res = 0;
for (int i = 0; i < S.length(); i++) {
int j = i;
while (j < S.length() && S.charAt(j) == S.charAt(i)) {
j++;
}
res += (1 + j - i) * (j - i) / 2;
i = j - 1;
}
return res;
}
}
時間複雜度 O ( l s ) O(l_s) O(ls),空間 O ( 1 ) O(1) O(1)。
相關文章
- SPOJ 694. Distinct Substrings,705. New Distinct Substrings(字尾陣列)陣列
- count_sum_distinct與nullNull
- 7.14 APPROX_COUNT_DISTINCTAPP
- 7.16 APPROX_COUNT_DISTINCT_DETAILAPPAI
- 7.15 APPROX_COUNT_DISTINCT_AGGAPP
- Sql優化(二) 快速計算Distinct CountSQL優化
- Leetcode Distinct SubsequencesLeetCode
- 大資料下的Distinct Count(二):Bitmap篇大資料
- ora-600 [rwoirw: check ret val] with count distinct and order by
- Leetcode-Distinct SubsequencesLeetCode
- Distinct Subsequences leetcode javaLeetCodeJava
- 使用子查詢可提升 COUNT DISTINCT 速度 50 倍
- Leetcode Count and SayLeetCode
- LeetCode:Count and SayLeetCode
- LeetCode 115 Distinct SubsequencesLeetCode
- Leetcode 38 Count and SayLeetCode
- LeetCode-Count PrimesLeetCode
- LeetCode-Count BitsLeetCode
- Leetcode-Count and SayLeetCode
- Count and Say leetcode javaLeetCodeJava
- Leetcode: Plus OneLeetCode
- Leetcode Plus OneLeetCode
- Oracle 12c新特性之:APPROX_COUNT_DISTINCT 函式OracleAPP函式
- [LeetCode] 115. Distinct SubsequencesLeetCode
- LeetCode-Count Univalue SubtreesLeetCode
- LeetCode-Count of Range SumLeetCode
- leetcode刷題--Count PrimesLeetCode
- leetcode刷題--Count and SayLeetCode
- Leetcode Letter Combinations of a Phone NumberLeetCode
- [leetcode]plus-oneLeetCode
- Leetcode-Plus OneLeetCode
- Plus One leetcode javaLeetCodeJava
- Leetcode 17 Letter Combinations of a Phone NumberLeetCode
- Leetcode-Letter Combinations of a Phone NumberLeetCode
- Letter Combinations of a Phone Number leetcode javaLeetCodeJava
- 【Leetcode】1395. Count Number of TeamsLeetCode
- "ScrollView can host only one direct child"問題解決View
- 【Leetcode】1081. Smallest Subsequence of Distinct CharactersLeetCode