The number of substrings of length K containing exactly X vowels
In this problem, we need to find the total number of substrings of length K that contain exactly K vowels. We will see two different ways to solve the problem. We can use a simple method to check the number of vowels in each substring of length K. Additionally, we can use a sliding window approach to solve this problem.
Problem Statement - We are given a string str of length N, containing lowercase and uppercase alphabetic characters. We need to count the total number of substrings of length K that contain exactly X vowels.
Example
Input– str = "TutorialsPoint", K = 3, X = 2
Output– 6
Explanation – Substrings of length 3 containing exactly 2 vowels are: 'uto', 'ori', 'ria', 'ial', 'Poi' and 'oin'. p>
Input– str = ‘aeiou’, K = 2, X = 2
Output– 4
Explanation-The substrings of length 2 and containing exactly 2 vowels are: ‘ae’, ‘ei’, ‘io’ and ‘ou’.
Input– str = ‘fghjsdfdffg’, K = 5, X = 1
Output– 0
Explanation - The string str does not contain any vowels, so we cannot find any substring containing 1 vowel.
method 1
In this method, we will find each substring of length K of str. After that, we will count the total number of vowels in a specific substring and if we find that they are equal to X, we can increase the count by 1.
algorithm
In the cntSubStr() function, initialize the "cnt" variable to zero to store the total number of substrings.
Use a loop to iterate from the 0th index to the len - K index, where "len" is the length of the string.
In the loop, use the substr() method to obtain a substring of length K starting from the i-th index.
Execute the countVowel() function to count the total number of vowels in the substring.
In the countVowel() function, initialize the "vowels" variable to zero to store the total number of vowels.
Traverse the substring, the current character is a vowel, add 1 to the value of ‘vowels’.
Return "vowel".
In the cntSubStr() function, if the total number of vowels in the substring is equal to X, increase the value of "cnt" by 1.
Return the value of "cnt".
Example
#include <bits/stdc++.h> using namespace std; // function to count the total number of vowels in a string int cntVowels(string alpha) { int vows = 0; for (int i = 0; i < alpha.length(); i++) { if (alpha[i] == 'a' || alpha[i] == 'e' || alpha[i] == 'i' || alpha[i] == 'o' || alpha[i] == 'u' || alpha[i] == 'A' || alpha[i] == 'E' || alpha[i] == 'I' || alpha[i] == 'O' || alpha[i] == 'U') vows++; } return vows; } int cntSubstr(string str, int K, int X) { int cnt = 0; // traverse the string and check for the total number of vowels in each substring of length K for (int i = 0; i <= str.length() - K; i++) { // get the substring of length K starting from index i string sub = str.substr(i, K); // check if the total number of vowels in the substring is equal to X, then increment cnt if (cntVowels(sub) == X) cnt++; } return cnt; } // Driver code int main(void) { string str = "TutorialsPoint"; int K = 3, X = 2; cout << "The total number of substrings of length " << K << " containing " << X << " vowels is " << cntSubstr(str, K, X); return 0; }
Output
The total number of substrings of length 3 containing 2 vowels is 6
Time complexity– O(N*K), when we traverse str, traverse the substrings in the countVowel() function.
Space Complexity – O(K) since we store substrings
Method 2
We will use sliding window technology to solve the problems in this method. We will remove the first character from the substring and add 1 character at the end. Additionally, we'll keep track of the count of vowels in the current substring, and if it's equal to X, we can increment the count by 1.
algorithm
Define the isVowel() function to return a Boolean value based on whether a specific character is a vowel.
In the cntSubStr() function, define "total_vow" and initialize it to zero to store the total vowels in the current window.
Starting from the 0th index, find the total number of vowels in the substring of length K, representing the first window.
Initialize the "cnt" variable to 1 or 0 depending on whether the value of "vow" is equal to X.
Start traversing the string from position 1 to len – K index.
If the (i-1) character is a vowel, decrement the value of "total_vow" by 1.
If the character at the (i - 1 K)th index is a vowel, increase the value of "total_vow" by 1.
If "total_vow" equals X, increase "cnt" by 1.
Return the value of "cnt".
Example
#include <bits/stdc++.h> using namespace std; bool isVowel(char ch) { // convert character to lowercase ch = tolower(ch); return (ch == 'a' || ch == 'e' || ch == 'i' || ch == 'o' || ch == 'u'); } int cntSubstr(string str, int K, int X) { // To store total vowels int total_vow = 0; // Count the number of vowels in the first window for (int p = 0; p < K; p++) if (isVowel(str[p])) total_vow++; // to store the total number of substrings of length K containing X vowels int cnt = 0; // If the first window contains exactly X vowels, initialize cnt as 1 cnt = total_vow == X ? 1 : 0; // traverse the string for (int i = 1; i <= str.length() - K; i++) { // exclude the (i - 1)th character from the window and update the total_vow total_vow = isVowel(str[i - 1]) ? total_vow - 1 : total_vow; // Add [i-1+K]th character to the current window and update total_vow total_vow = isVowel(str[i - 1 + K]) ? total_vow + 1 : total_vow; // If the current window contains exactly X vowels, increment cnt if (total_vow == X) cnt++; } return cnt; } int main(void) { string str = "TutorialsPoint"; int K = 3, X = 2; cout << "The total number of substrings of length " << K << " containing " << X << " vowels is " << cntSubstr(str, K, X); return 0; }
Output
The total number of substrings of length 3 containing 2 vowels is 6
Time complexity - O(N), since we iterate over the string.
Space complexity - O(1) since we don't use any extra space.
We optimized the second method and reduced the time complexity of the code. In addition, we also optimize the space complexity of the second method. Here we find the total number of substrings of length K that contain exactly X vowels, but the programmer could try to find the total number of substrings of any length that contain exactly K vowels.
The above is the detailed content of The number of substrings of length K containing exactly X vowels. For more information, please follow other related articles on the PHP Chinese website!

Hot AI Tools

Undresser.AI Undress
AI-powered app for creating realistic nude photos

AI Clothes Remover
Online AI tool for removing clothes from photos.

Undress AI Tool
Undress images for free

Clothoff.io
AI clothes remover

Video Face Swap
Swap faces in any video effortlessly with our completely free AI face swap tool!

Hot Article

Hot Tools

Notepad++7.3.1
Easy-to-use and free code editor

SublimeText3 Chinese version
Chinese version, very easy to use

Zend Studio 13.0.1
Powerful PHP integrated development environment

Dreamweaver CS6
Visual web development tools

SublimeText3 Mac version
God-level code editing software (SublimeText3)

Hot Topics



There is no fixed limit to the length of an array in PHP, it can be dynamically adjusted according to the system's memory size. In PHP, an array is a very flexible data structure that can store any number of elements, and each element can be a value of any type, or even another array. The length limit of PHP arrays mainly depends on the memory size of the system and the memory limit of PHP configuration. Generally speaking, if the system's memory is large enough and PHP's memory limit is high enough, the length of the array can be very large. However, if your system is low on memory or

In this article, we will discuss how to modify a given string in C++ by rearranging the vowels alphabetically at their respective indices. We will also explain the methods used to solve this problem and provide examples with test cases. Problem Statement Given a string, rearrange the vowels at their respective indices in alphabetical order. Consonants in the string should maintain their original order. For example, given the string "tutorialspoint", the output should be "tatiriolspount". Method This problem can be solved using a simple algorithm. We can first create a separate string containing all the vowels in the given string in their respective order. We can then sort that string alphabetically. at last,

Is there a limit to PHP array length? Need specific code examples In PHP, the array length is not subject to a fixed limit, and the array size can be dynamically adjusted according to the actual limit of the system memory. Arrays in PHP are dynamic arrays, so they can grow or shrink dynamically as needed. In PHP, an array is an ordered mapped data structure, and array elements can be accessed using array subscripts or associative array key values. Let's look at a specific code example to demonstrate whether the PHP array length is limited. First, we can pass the following code

The purpose of this article is to implement a program that maximizes the sum of the lengths of a pair of strings that have no common characters in a given array. By definition, a string is a collection of characters. Problem Statement Implement a program to maximize the sum of lengths of a pair of strings that have no common characters in a given array. Example 1LetusconsidertheInputarray:a[]=["efgh","hat","fto","car","wxyz","fan"]Outputobtained:8 Description There are no common characters in the strings "abcd" and "wxyz". As a result, the combined length of the two strings is 4+4, which is equal to 8, which is the longest length among all feasible pairs. Example 2Letu

The role and meaning of the len function is interpreted from different angles. The len function is one of the commonly used functions in the Python programming language. It is mainly used to return the length or number of elements of a container object (such as string, list, tuple, etc.). This simple function plays a very important role when writing programs, and its function and meaning can be interpreted from many angles. This article will explain the len function from the perspectives of performance, readability, and container type, and provide specific code examples. 1. Performance perspective When processing large-scale data, the performance of the program

In golang, validating the length of input text is a common need. Through validation, we can ensure that the entered text meets specific requirements and is within the length we expect. In this article, we will explore how to verify the length of input text using golang. First, we need to understand the commonly used string functions in golang. Among them, the len() function is used to calculate the length of the string. For example, the following code calculates the length of the string "helloworld": str:=

The hypotenuse is the longest side of a right triangle opposite the right angle. The length of the hypotenuse can be found using Pythagoras' theorem. According to the Pythagoras theorem, the sum of the squares of the lengths of two sides is equal to the square of the length of the third side, that is, a2+b2=c2 where a, b, and c represent the three sides of a right triangle. So,Hypotenuse=Math.sqrt(Math.pow(base,2)+Math.pow(height,2)) In this article, we will see how to find the length of the hypotenuse using Java programming language. Let me show you some examples. The Chinese translation of Instance-1 is: Example-1 Assume that the base length and height are 3 and 4 respectively. Then by using the Pythagorean theorem formula, Length

In this problem, we need to find the total number of substrings of length K that contain exactly K vowels. We will see two different ways to solve the problem. We can use a simple method to check the number of vowels in each substring of length K. Additionally, we can use a sliding window approach to solve this problem. Problem Statement - We are given a string str of length N, containing lowercase and uppercase alphabetic characters. We need to count the total number of substrings of length K that contain exactly X vowels. Example input – str="TutorialsPoint",K=3,X=2 Output – 6 Explanation – A substring of length 3 and containing exactly 2 vowels is: 'uto', 'ori', 'ri
