828. Count Unique Characters of All Substrings of a Given String
Đề Bài
Let's define a function countUniqueChars(s) that returns the number of unique characters in s.
- For example, calling
countUniqueChars(s)ifs = "LEETCODE"then"L","T","C","O","D"are the unique characters since they appear only once ins, thereforecountUniqueChars(s) = 5.
Given a string s, return the sum of countUniqueChars(t) where t is a substring of s. The test cases are generated such that the answer fits in a 32-bit integer.
Notice that some substrings can be repeated so in this case you have to count the repeated ones too.
Example 1:
Input: s = "ABC" Output: 10 Explanation: All possible substrings are: "A","B","C","AB","BC" and "ABC". Every substring is composed with only unique letters. Sum of lengths of all substring is 1 + 1 + 1 + 2 + 2 + 3 = 10
Example 2:
Input: s = "ABA"
Output: 8
Explanation: The same as example 1, except countUniqueChars("ABA") = 1.
Example 3:
Input: s = "LEETCODE" Output: 92
Constraints:
1 <= s.length <= 105sconsists of uppercase English letters only.
Thuật Toán & Kỹ Thuật
⏱️ Thời gian
O(n²)
💾 Không gian
O(1)
Lời Giải
C++
0828-count-unique-characters-of-all-substrings-of-a-given-string.cpp
class Solution {
public:
int uniqueLetterString(string s) {
const int n = s.size();
int ans = 0;
const int MOD = 1e9 + 7;
for (int i = 0, l = i, r = i; i < n; ++i) {
for (l = i - 1; l >= 0 && s[i] != s[l]; --l);
for (r = i + 1; r < n && s[i] != s[r]; ++r);
ans += ((i - l)*(r - i)) % MOD;
}
return ans;
}
};