![]() |
VOOZH | about |
Given a string S and a character C, the task is to count the number of substrings of S that contains only the character C.
Examples:
Input: S = "0110111", C = '1'
Output: 9
Explanation:
The substrings containing only '1' are:
"1" — 5 times
"11" — 3 times
"111" — 1 time
Hence, the count is 9.
Input: S = "geeksforgeeks", C = 'e'
Output: 6
Naive Approach:
The simplest approach is to generate all possible substrings of the given string S and count the substrings which contains only character C.
Time Complexity: O(N3)
Space Complexity: O(1)
Efficient Approach:
To optimize the above approach, the fact that a string of length N forms N*(N+1)/2 substrings can be applied. Therefore, for N consecutive occurrence of character C in the string, N*(N+1)/2 substrings are generated. Hence, iterate through the entire length of the string S and for each consecutive substring of character C, count the possible number of substrings possible from them and add to the total count of substrings possible.
Illustration:
👁 Image
S = "0110111", C = '1'
Below is the implementation of the above approach:
6
Time Complexity: O(N)
Auxiliary Space: O(1)