Encrypt string with product of number of vowels and consonants in substring of size k

Given a string s and a positive integer k. You need to encrypt the given string such that each substring of size k is represented by an integer, which is obtained by the product of number of vowels and number of consonants in the substring.
Examples:
Input : s = "hello", k = 2 Output : 1101 k = 2, so each substring should be of size 2, he, consonants = 1, vowels = 1, product = 1 el, consonants = 1, vowels = 1, product = 1 ll, consonants = 1, vowels = 0, product = 0 lo, consonants = 1, vowels = 1, product = 1 So, encrypted string is 1101. Input : s = "zambiatek", k = 5 Output : 666446666
Method 1 (Brute Force): The idea is to find each substring of size k and calculate the number of vowels and consonants, and then store the product of two.
Implementation:
C++
// CPP Program to Encrypt string with product// of number of vowels and consonants in every// substring of size k#include <bits/stdc++.h>using namespace std;// isVowel() is a function that returns true// for a vowel and false otherwise.bool isVowel(char c){ return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');}// function to Encrypt the stringstring encryptString(string s, int n, int k){ int countVowels = 0; int countConsonants = 0; string ans = ""; // for each substring for (int l = 0; l <= n - k; l++) { countVowels = 0; countConsonants = 0; // substring of size k for (int r = l; r <= l + k - 1; r++) { // counting number of vowels and // consonants if (isVowel(s[r]) == true) countVowels++; else countConsonants++; } // append product to answer. ans += to_string(countVowels * countConsonants); } return ans;}// Driven Programint main(){ string s = "hello"; int n = s.length(); int k = 2; cout << encryptString(s, n, k) << endl; return 0;} |
Java
// Java Program to Encrypt String with product // of number of vowels and consonants in every // substring of size k class GFG {// isVowel() is a function that returns true // for a vowel and false otherwise. static boolean isVowel(char c) { return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'); }// function to Encrypt the string static String encryptString(String s, int n, int k) { int countVowels = 0; int countConsonants = 0; String ans = ""; // for each substring for (int l = 0; l <= n - k; l++) { countVowels = 0; countConsonants = 0; // substring of size k for (int r = l; r <= l + k - 1; r++) { // counting number of vowels and // consonants if (isVowel(s.charAt(r)) == true) { countVowels++; } else { countConsonants++; } } // append product to answer. ans += String.valueOf(countVowels * countConsonants); } return ans; }// Driven Program static public void main(String[] args) { String s = "hello"; int n = s.length(); int k = 2; System.out.println(encryptString(s, n, k)); }}// This code is contributed by 29AjayKumar |
Python3
# Python Program to Encrypt string with # product of number of vowels and # consonants in every substring of size k# isVowel() is a function that returns # true for a vowel and false otherwise.def isVowel(c): return (c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u')# function to Encrypt the stringdef encryptString(s, n, k): countVowels = 0 countConsonants = 0 ans = "" # for each substring for l in range(n - k + 1): countVowels = 0 countConsonants = 0 # substring of size k for r in range(l, l + k): # counting number of vowels # and consonants if (isVowel(s[r]) == True): countVowels += 1 else: countConsonants += 1 # append product to answer ans += (str)(countVowels * countConsonants) return ans# Driver Codeif __name__ == '__main__': s = "hello" n = len(s) k = 2 print(encryptString(s, n, k))# This code is contributed # by PrinciRaj1992 |
C#
// C# Program to Encrypt String with product // of number of vowels and consonants in every // substring of size k using System; public class GFG { // isVowel() is a function that returns true // for a vowel and false otherwise. static bool isVowel(char c) { return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'); } // function to Encrypt the string static String encryptString(String s, int n, int k) { int countVowels = 0; int countConsonants = 0; String ans = ""; // for each substring for (int l = 0; l <= n - k; l++) { countVowels = 0; countConsonants = 0; // substring of size k for (int r = l; r <= l + k - 1; r++) { // counting number of vowels and // consonants if (isVowel(s[r]) == true) { countVowels++; } else { countConsonants++; } } // append product to answer. ans += Convert.ToString(countVowels * countConsonants); } return ans; }// Driven Program static public void Main() { String s = "hello"; int n = s.Length; int k = 2; Console.Write(encryptString(s, n, k)); }} // This code is contributed by 29AjayKumar |
PHP
<?php// PHP Program to Encrypt string with // product of number of vowels and // consonants in every substring of size k// isVowel() is a function that returns true// for a vowel and false otherwise.function isVowel($c){ return ($c == 'a' || $c == 'e' || $c == 'i' || $c == 'o' || $c == 'u');}// function to Encrypt the stringfunction encryptString($s, $n, $k){ $countVowels = 0; $countConsonants = 0; $ans = ""; // for each substring for ($l = 0; $l <= $n - $k; $l++) { $countVowels = 0; $countConsonants = 0; // substring of size k for ($r = $l; $r <= $l + $k - 1; $r++) { // counting number of vowels and // consonants if (isVowel($s[$r]) == true) $countVowels++; else $countConsonants++; } // append product to answer. $ans = $ans . (string)($countVowels * $countConsonants); } return $ans;}// Driver Code$s = "hello";$n = strlen($s);$k = 2;echo encryptString($s, $n, $k) . "\n";// This code is contributed// by Akanksha Rai |
Javascript
<script>// Javascript Program to Encrypt string with product// of number of vowels and consonants in every// substring of size k// isVowel() is a function that returns true// for a vowel and false otherwise.function isVowel(c){ return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');}// function to Encrypt the stringfunction encryptString(s, n, k){ var countVowels = 0; var countConsonants = 0; var ans = ""; // for each substring for (var l = 0; l <= n - k; l++) { countVowels = 0; countConsonants = 0; // substring of size k for (var r = l; r <= l + k - 1; r++) { // counting number of vowels and // consonants if (isVowel(s[r]) == true) countVowels++; else countConsonants++; } // append product to answer. ans += (countVowels * countConsonants).toString(); } return ans;}// Driven Programvar s = "hello";var n = s.length;var k = 2;document.write( encryptString(s, n, k));</script> |
1101
Method 2 (Efficient Approach):
The above approach can be optimized. In above approach, we are calculating whether a character is vowel or consonant more than one times. Now, taking a closer look at it, we can see that we are calculating the count of vowels and consonants for the same k – 1 characters twice. We can calculate the count of vowels and consonants for the characters from [1….k – 1] and [2….k-1] twice.
To avoid this, we can precompute the count of vowels and consonants till each index i and later use those values to calculate the result.
Below is the implementation of this approach:
C++
// CPP Program to Encrypt string with product of // number of vowels and consonants in substring// of size k#include <bits/stdc++.h>using namespace std;// isVowel() is a function that returns true// for a vowel and false otherwise.bool isVowel(char c){ return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u');}// function to Encrypt the stringstring encryptString(string s, int n, int k){ // cv to count vowel // cc to count consonants int cv[n], cc[n]; if (isVowel(s[0])) cv[0] = 1; else cc[0] = 1; // Counting prefix count of vowel // and prefix count of consonants for (int i = 1; i < n; i++) { cv[i] = cv[i - 1] + isVowel(s[i]); cc[i] = cc[i - 1] + !isVowel(s[i]); } string ans = ""; int prod = 0; prod = cc[k - 1] * cv[k - 1]; ans += to_string(prod); // generating the encrypted string. for (int i = k; i < s.length(); i++) { prod = (cc[i] - cc[i - k]) * (cv[i] - cv[i - k]); ans += to_string(prod); } return ans;}// Driven Programint main(){ string s = "hello"; int n = s.length(); int k = 2; cout << encryptString(s, n, k) << endl; return 0;} |
Java
// JAVA Program to Encrypt String with product of // number of vowels and consonants in subString// of size kclass GFG { // isVowel() is a function that returns true // for a vowel and false otherwise. static boolean isVowel(char c) { return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'); } // function to Encrypt the String static String encryptString(char[] s, int n, int k) { // cv to count vowel // cc to count consonants int[] cv = new int[n]; int[] cc = new int[n]; if (isVowel(s[0])) cv[0] = 1; else cc[0] = 1; // Counting prefix count of vowel // and prefix count of consonants for (int i = 1; i < n; i++) { cv[i] = cv[i - 1] + (isVowel(s[i]) == true ? 1 : 0); cc[i] = cc[i - 1] + (isVowel(s[i]) == true ? 0 : 1); } String ans = ""; int prod = 0; prod = cc[k - 1] * cv[k - 1]; ans += String.valueOf(prod); // generating the encrypted String. for (int i = k; i < s.length; i++) { prod = (cc[i] - cc[i - k]) * (cv[i] - cv[i - k]); ans += String.valueOf(prod); } return ans; } // Driver Code public static void main(String[] args) { String s = "hello"; int n = s.length(); int k = 2; System.out.print(encryptString(s.toCharArray(), n, k) + "\n"); }}// This code is contributed by 29AjayKumar |
Python3
# Python 3 Program to Encrypt string with # product of number of vowels and consonants # in substring of size k# isVowel() is a function that returns true# for a vowel and false otherwise.def isVowel(c): return (c == 'a' or c == 'e' or c == 'i' or c == 'o' or c == 'u')# function to Encrypt the stringdef encryptString(s, n, k): # cv to count vowel # cc to count consonants cv = [0 for i in range(n)] cc = [0 for i in range(n)] if (isVowel(s[0])): cv[0] = 1 else: cc[0] = 1 # Counting prefix count of vowel # and prefix count of consonants for i in range(1,n): cv[i] = cv[i - 1] + isVowel(s[i]) cc[i] = cc[i - 1] + (isVowel(s[i]) == False) ans = "" prod = 0 prod = cc[k - 1] * cv[k - 1] ans += str(prod) # generating the encrypted string. for i in range(k, len(s)): prod = ((cc[i] - cc[i - k]) * (cv[i] - cv[i - k])) ans += str(prod) return ans# Driver Codeif __name__ == '__main__': s = "hello" n = len(s) k = 2 print(encryptString(s, n, k)) # This code is contributed by# Surendra_Gangwar |
C#
// C# Program to Encrypt String with // product of number of vowels and // consonants in subString of size kusing System;class GFG { // isVowel() is a function that // returns true for a vowel and // false otherwise. static bool isVowel(char c) { return (c == 'a' || c == 'e' || c == 'i' || c == 'o' || c == 'u'); } // function to Encrypt the String static String encryptString(char[] s, int n, int k) { // cv to count vowel // cc to count consonants int[] cv = new int[n]; int[] cc = new int[n]; if (isVowel(s[0])) cv[0] = 1; else cc[0] = 1; // Counting prefix count of vowel // and prefix count of consonants for (int i = 1; i < n; i++) { cv[i] = cv[i - 1] + (isVowel(s[i]) == true ? 1 : 0); cc[i] = cc[i - 1] + (isVowel(s[i]) == true ? 0 : 1); } String ans = ""; int prod = 0; prod = cc[k - 1] * cv[k - 1]; ans += String.Join("", prod); // generating the encrypted String. for (int i = k; i < s.Length; i++) { prod = (cc[i] - cc[i - k]) * (cv[i] - cv[i - k]); ans += String.Join("", prod); } return ans; } // Driver Code public static void Main(String[] args) { String s = "hello"; int n = s.Length; int k = 2; Console.Write(encryptString( s.ToCharArray(), n, k) + "\n"); }}// This code is contributed by 29AjayKumar |
Javascript
<script> // JavaScript Program to Encrypt String with // product of number of vowels and // consonants in subString of size k // isVowel() is a function that // returns true for a vowel and // false otherwise. function isVowel(c) { return c === "a" || c === "e" || c === "i" || c === "o" || c === "u"; } // function to Encrypt the String function encryptString(s, n, k) { // cv to count vowel // cc to count consonants var cv = new Array(n).fill(0); var cc = new Array(n).fill(0); if (isVowel(s[0])) cv[0] = 1; else cc[0] = 1; // Counting prefix count of vowel // and prefix count of consonants for (var i = 1; i < n; i++) { cv[i] = cv[i - 1] + (isVowel(s[i]) === true ? 1 : 0); cc[i] = cc[i - 1] + (isVowel(s[i]) === true ? 0 : 1); } var ans = ""; var prod = 0; prod = cc[k - 1] * cv[k - 1]; ans += prod; // generating the encrypted String. for (var i = k; i < s.length; i++) { prod = (cc[i] - cc[i - k]) * (cv[i] - cv[i - k]); ans += prod; } return ans; } // Driver Code var s = "hello"; var n = s.length; var k = 2; document.write(encryptString(s.split(""), n, k) + "<br>"); </script> |
-1355847807101
Ready to dive in? Explore our Free Demo Content and join our DSA course, trusted by over 100,000 zambiatek!



