Table of Contents
Example
method 1
algorithm
Output
Method 2
Home Backend Development C++ The number of substrings of length K containing exactly X vowels

The number of substrings of length K containing exactly X vowels

Sep 01, 2023 am 08:57 AM
length vowel Number of substrings

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;
}
Copy after login

Output

The total number of substrings of length 3 containing 2 vowels is 6
Copy after login
Copy after login

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;
}
Copy after login

Output

The total number of substrings of length 3 containing 2 vowels is 6
Copy after login
Copy after login

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!

Statement of this Website
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn

Hot AI Tools

Undresser.AI Undress

Undresser.AI Undress

AI-powered app for creating realistic nude photos

AI Clothes Remover

AI Clothes Remover

Online AI tool for removing clothes from photos.

Undress AI Tool

Undress AI Tool

Undress images for free

Clothoff.io

Clothoff.io

AI clothes remover

Video Face Swap

Video Face Swap

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

Hot Tools

Notepad++7.3.1

Notepad++7.3.1

Easy-to-use and free code editor

SublimeText3 Chinese version

SublimeText3 Chinese version

Chinese version, very easy to use

Zend Studio 13.0.1

Zend Studio 13.0.1

Powerful PHP integrated development environment

Dreamweaver CS6

Dreamweaver CS6

Visual web development tools

SublimeText3 Mac version

SublimeText3 Mac version

God-level code editing software (SublimeText3)

What is the PHP array length limit? What is the PHP array length limit? Mar 13, 2024 pm 06:30 PM

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

Modify a string by rearranging vowels according to their index position in the string Modify a string by rearranging vowels according to their index position in the string Sep 06, 2023 pm 06:53 PM

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? Is there a limit to PHP array length? Mar 13, 2024 pm 06:36 PM

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

Given an array, find the maximum sum of the lengths of two strings that do not have the same characters. Given an array, find the maximum sum of the lengths of two strings that do not have the same characters. Aug 29, 2023 pm 06:45 PM

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

Multiple perspectives on the use and importance of the len function Multiple perspectives on the use and importance of the len function Dec 28, 2023 am 08:38 AM

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

How to verify the length of input text in golang How to verify the length of input text in golang Jun 24, 2023 am 11:52 AM

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:=

How to find the length of hypotenuse in Java? How to find the length of hypotenuse in Java? Sep 09, 2023 pm 10:33 PM

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

The number of substrings of length K containing exactly X vowels The number of substrings of length K containing exactly X vowels Sep 01, 2023 am 08:57 AM

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

See all articles