
Data Structure
Networking
RDBMS
Operating System
Java
MS Excel
iOS
HTML
CSS
Android
Python
C Programming
C++
C#
MongoDB
MySQL
Javascript
PHP
- Selected Reading
- UPSC IAS Exams Notes
- Developer's Best Practices
- Questions and Answers
- Effective Resume Writing
- HR Interview Questions
- Computer Glossary
- Who is Who
Count Vowels in All Substrings of Given String in C++
Given a string str containing English alphabets. The goal is to find the number of vowels occurring in all the substrings of str. If string is “abcde” then substrings will be “a”, “b”, “c”, “d”, “e”, “ab”, “bc”, “cd”, “de”, “abc”, “bcd”, “cde”, “abcd”, “bcde”, “abcde”. The count of vowels in these substrings is 10. (a and e)
For Example
Input
str = ”aloe”
Output
Count the number of vowels occurring in all the substrings of given string are: 14
Explanation
The substrings are: “a”, “l”, “o”, “e”, “al”, “lo”, “oe”, “alo”, “loe”, “aloe”. Total vowels in these are: 14
Input
str=”http”
Output
Count the number of vowels occurring in all the substrings of given string are: 0
Explanation
The substrings are: “h”, “t”, “t”, “p”, “ht”, “tt”, “tp”, “htt”, “ttp”, “http”. Total vowels in these are: 0
Approach used in the below program is as follows −
In this approach we will create a vector vec, which stores counts of occurrences of ith character in all substrings in vec[i].
The 0th character occurs in n substrings where n is length of string str.
The ith character occurs in all substrings containing it ( n−i ) + number of substrings containing ith character as well as previous character ( arr[ i−1 ] ) − number of substrings formed by previous characters only ( i ).
Take a string str as input.
Function substring_vowels_count(string str, int length) takes str with its length and returns the count the number of vowels occurring in all the substrings of a given string.
Take the initial count as 0.
Take an integer vector vec.
Traverse vec using a for loop from i−0 to i<length and populate it with counts of occurrences of ith position character in all substrings of str.
If i=0, for 0th character this count is length. Set vec[0]=length using push_back[length].
For all other characters set using push_back(temp_1 + temp_2) where temp_1=length−1 and temp_2=vec[i−1]−i.
Now traverse str again using for loop and for each str[i] as vowel, ( a , e, i, o, or u ). Add vec[i] to count.
At the end we will have a total number of occurrences of vowels in substrings in count.
Return count as result.
Example
#include <bits/stdc++.h> using namespace std; int substring_vowels_count(string str, int length){ int count = 0; vector<int> vec; for (int i = 0; i < length; i++){ if (i == 0){ vec.push_back(length); } else { int temp_1 = length − i; int temp_2 = vec[i − 1] − i; vec.push_back(temp_1 + temp_2); } } for (int i = 0; i < length; i++){ if(str[i] == 'a' || str[i] == 'i' || str[i] == 'e' || str[i] == 'o' || str[i] == 'u'){ count = count + vec[i]; } } return count; } int main(){ string str = "honesty"; int length = str.length(); cout<<"Count the number of vowels occurring in all the substrings of given string are: "<<substring_vowels_count(str, length); return 0; }
Output
If we run the above code it will generate the following output −
Count the number of vowels occurring in all the substrings of given string are: 28