Check if a String can be converted to Pangram in K changes
Last Updated :
01 Sep, 2022
Given a String str containing only lowercase English alphabets and an integer K. The task is to check that whether the string can be converted to a Pangram by performing at most K changes. In one change we can remove any existing character and add a new character.
Pangram: A pangram is a sentence containing every letter in the English Alphabet.
Note: Given that length of string is greater than 26 always and in one operation we have to remove an existing element to add a new element.
Examples:
Input : str = "qwqqwqeqqwdsdadsdasadsfsdsdsdasasas"
K = 4
Output : False
Explanation : Making just 4 modifications in this string,
it can't be changed to a pangram.
Input : str = "qwqqwqeqqwdsdadsdasadsfsdsdsdasasas"
K = 24
Output : True
Explanation : By making 19 modifications in the string,
it can be changed to a pangram.
Approach:
- Traverse the string character by character to keep track of all the characters present in the array using a boolean visit array.
- Using a variable count, traverse the visit array to keep count of the missing characters.
- If count value is less than or equal to K, print True.
- Else print False.
Below is the implementation of above approach:
C++
// C++ program to check if a
// String can be converted
// to Pangram by atmost k modifications
#include<bits/stdc++.h>
using namespace std;
// Function to find if string
// can be converted to Pangram
// by atmost k modifications
bool isPangram(string S, int k)
{
if (S.length() < 26)
return false;
// visit array to keep track
// of all the characters
// present in the array
int visited[26];
for(int i = 0; i < S.length(); i++)
visited[S[i] - 'a'] = true;
// A variable to keep count
// of characters missing
// in the string
int count = 0;
for(int i = 0; i < 26; i++)
{
if (!visited[i])
count += 1;
}
// Comparison of count
// with given value K
if(count <= k )
return true;
return false;
}
// Driver Code
int main()
{
string S = "thequickquickfoxmumpsoverthelazydog";
int k = 15;
// function calling
isPangram(S, k) ? cout<< "true" :
cout<< "false";
return 0;
}
// This code is contributed by ChitraNayal
Java
// Java Program to check if a String can be
// converted to Pangram by atmost k modifications
public class GFG {
// Function to find if string can be converted
// to Pangram by atmost k modifications
static boolean isPangram(String S, int k)
{
if (S.length() < 26)
return false;
// visit array to keep track of all
// the characters present in the array
boolean[] visited = new boolean[26];
for (int i = 0; i < S.length(); i++) {
visited[S.charAt(i) - 'a'] = true;
}
// A variable to keep count of
// characters missing in the string
int count = 0;
for (int i = 0; i < 26; i++) {
if (!visited[i])
count++;
}
// Comparison of count with given value K
if (count <= k)
return true;
return false;
}
// Driver code
public static void main(String[] args)
{
String S = "thequickquickfoxmumpsoverthelazydog";
int k = 15;
System.out.print(isPangram(S, k));
}
}
Python 3
# Python 3 program to check
# if a String can be converted
# to Pangram by atmost k modifications
# Function to find if string
# can be converted to Pangram
# by atmost k modifications
def isPangram(S, k) :
if len(S) < 26 :
return False
# visit array to keep track
# of all the characters
# present in the array
visited = [0] * 26
for char in S :
visited[ord(char) - ord('a')] = True
# A variable to keep count
# of characters missing
# in the string
count = 0
for i in range(26) :
if visited[i] != True :
count += 1
# Comparison of count
# with given value K
if count <= k :
return True
return False
# Driver Code
if __name__ == "__main__" :
S = "thequickquickfoxmumpsoverthelazydog"
k = 15
# function calling
print(isPangram(S,k))
# This code is contributed by ANKITRAI1
C#
// C# Program to check if a
// String can be converted to
// Pangram by atmost k modifications
using System;
class GFG
{
// Function to find if string
// can be converted to Pangram
// by atmost k modifications
static bool isPangram(String S, int k)
{
if (S.Length < 26)
return false;
// visit array to keep track
// of all the characters present
// in the array
bool[] visited = new bool[26];
for (int i = 0; i < S.Length; i++)
{
visited[S[i] - 'a'] = true;
}
// A variable to keep count
// of characters missing in
// the string
int count = 0;
for (int i = 0; i < 26; i++)
{
if (!visited[i])
count++;
}
// Comparison of count with
// given value K
if (count <= k)
return true;
return false;
}
// Driver code
public static void Main()
{
string S = "thequickquickfoxmumpsoverthelazydog";
int k = 15;
Console.WriteLine(isPangram(S, k));
}
}
// This code is contributed
// by inder_verma.
PHP
<?php
// PHP program to check if a
// String can be converted
// to Pangram by atmost k modifications
// Function to find if string
// can be converted to Pangram
// by atmost k modifications
function isPangram($S, $k)
{
if (strlen($S) < 26)
return false;
// visit array to keep track
// of all the characters
// present in the array
$visited = array_fill(0, 26, NULL);
for($i = 0; $i < strlen($S); $i++)
$visited[ord($S[$i]) -
ord('a')] = true;
// A variable to keep count
// of characters missing
// in the string
$count = 0;
for($i = 0; $i < 26; $i++)
{
if ($visited[$i] != true)
$count += 1;
}
// Comparison of count
// with given value K
if ($count <= $k )
return true;
return false;
}
// Driver Code
$S = "thequickquickfoxmumpsoverthelazydog";
$k = 15;
// function calling
echo isPangram($S, $k)? "true" : "false";
// This code is contributed by ChitraNayal
?>
JavaScript
<script>
// JavaScript Program to check if a
// String can be converted to
// Pangram by atmost k modifications
// Function to find if string
// can be converted to Pangram
// by atmost k modifications
function isPangram(S, k) {
if (S.length < 26) return false;
// visit array to keep track
// of all the characters present
// in the array
var visited = new Array(26);
for (var i = 0; i < S.length; i++) {
visited[S[i].charCodeAt(0) - "a".charCodeAt(0)] = true;
}
// A variable to keep count
// of characters missing in
// the string
var count = 0;
for (var i = 0; i < 26; i++) {
if (!visited[i]) count++;
}
// Comparison of count with
// given value K
if (count <= k) return true;
return false;
}
// Driver code
var S = "thequickquickfoxmumpsoverthelazydog";
var k = 15;
document.write(isPangram(S, k));
</script>
Complexity Analysis:
- Time Complexity: O(|S|) ,where S is the given string
- Space Complexity : O(26) ,to store characters.
Similar Reads
Check if string S can be converted to T by incrementing characters Given strings S and T. The task is to check if S can be converted to T by performing at most K operations. For the ith operation, select any character in S which has not been selected before, and increment the chosen character i times (i.e., replacing it with the letter i times ahead in the alphabet
8 min read
Check if one string can be converted to another Given two strings str and str1, the task is to check whether one string can be converted to other by using the following operation: Convert all the presence of a character by a different character. For example, if str = "abacd" and operation is to change character 'a' to 'k', then the resultant str
8 min read
Check if K palindromic strings can be formed from a given string Given a string S of size N and an integer K, the task is to find whether the characters of the string can be arranged to make K palindromic strings simultaneously. Examples: Input: S = "annabelle", K = 2 Output: Yes Explanation: All characters of string S can be distributed into "elble" and "anna" w
7 min read
Check if a String contains any index with more than K active characters Given a string S, containing lowercase English alphabets, and an integer K, the task is to find any index of the string which consists of more than K active characters. If found, print Yes. Otherwise, print No. Count of active characters for any index is the number of characters having previous occu
6 min read
Missing characters to make a string Pangram Pangram is a sentence containing every letter in the English alphabet. Given a string, find all characters that are missing from the string, i.e., the characters that can make the string a Pangram. We need to print output in alphabetic order. Examples: Input : welcome to geeksforgeeksOutput : abdhij
8 min read