Given a string str consisting of alphanumeric characters, the task is to check whether the string contains all the digits from 1 to 9. The string can contain other characters, but it should contain all the digits from 1 to 9.
Examples:
Input: str = “Geeks12345for69708”
Output: Yes
Explanation: All the digits from 0 to 9 are present in the given string.Input: str = “Amazing1234”
Output: No
Explanation: All the digits are not present in the string.
Approach: Create a frequency array to mark the frequency of each of the digits from 0 to 9. Finally, traverse the frequency array and if there is any digit that is not present in the given string then the answer will be “No” else the answer will be “Yes”.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
const int MAX = 10;
// Function that returns true // if ch is a digit bool isDigit( char ch)
{ if (ch >= '0' && ch <= '9' )
return true ;
return false ;
} // Function that returns true // if str contains all the // digits from 0 to 9 bool allDigits(string str, int len)
{ // To mark the present digits
bool present[MAX] = { false };
// For every character of the string
for ( int i = 0; i < len; i++) {
// If the current character is a digit
if (isDigit(str[i])) {
// Mark the current digit as present
int digit = str[i] - '0' ;
present[digit] = true ;
}
}
// For every digit from 0 to 9
for ( int i = 0; i < MAX; i++) {
// If the current digit is
// not present in str
if (!present[i])
return false ;
}
return true ;
} // Driver code int main()
{ string str = "Geeks12345for69708" ;
int len = str.length();
if (allDigits(str, len))
cout << "Yes" ;
else
cout << "No" ;
return 0;
} |
// Java implementation of the approach class GFG
{ static int MAX = 10 ;
// Function that returns true // if ch is a digit static boolean isDigit( char ch)
{ if (ch >= '0' && ch <= '9' )
return true ;
return false ;
} // Function that returns true // if str contains all the // digits from 0 to 9 static boolean allDigits(String str, int len)
{ // To mark the present digits
boolean []present = new boolean [MAX];
// For every character of the String
for ( int i = 0 ; i < len; i++)
{
// If the current character is a digit
if (isDigit(str.charAt(i)))
{
// Mark the current digit as present
int digit = str.charAt(i) - '0' ;
present[digit] = true ;
}
}
// For every digit from 0 to 9
for ( int i = 0 ; i < MAX; i++)
{
// If the current digit is
// not present in str
if (!present[i])
return false ;
}
return true ;
} // Driver code public static void main(String[] args)
{ String str = "Geeks12345for69708" ;
int len = str.length();
if (allDigits(str, len))
System.out.print( "Yes" );
else
System.out.print( "No" );
} } // This code is contributed by 29AjayKumar |
# Python3 implementation of the approach MAX = 10
# Function that returns true # if ch is a digit def isDigit(ch):
ch = ord (ch)
if (ch > = ord ( '0' ) and ch < = ord ( '9' )):
return True
return False
# Function that returns true # if st contains all the # digits from 0 to 9 def allDigits(st, le):
# To mark the present digits
present = [ False for i in range ( MAX )]
# For every character of the string
for i in range (le):
# If the current character is a digit
if (isDigit(st[i])):
# Mark the current digit as present
digit = ord (st[i]) - ord ( '0' )
present[digit] = True
# For every digit from 0 to 9
for i in range ( MAX ):
# If the current digit is
# not present in st
if (present[i] = = False ):
return False
return True
# Driver code st = "Geeks12345for69708"
le = len (st)
if (allDigits(st, le)):
print ( "Yes" )
else :
print ( "No" )
# This code is contributed by Mohit Kumar |
// C# implementation of the approach using System;
class GFG
{ static int MAX = 10;
// Function that returns true // if ch is a digit static bool isDigit( char ch)
{ if (ch >= '0' && ch <= '9' )
return true ;
return false ;
} // Function that returns true // if str contains all the // digits from 0 to 9 static bool allDigits(String str, int len)
{ // To mark the present digits
bool []present = new bool [MAX];
// For every character of the String
for ( int i = 0; i < len; i++)
{
// If the current character is a digit
if (isDigit(str[i]))
{
// Mark the current digit as present
int digit = str[i] - '0' ;
present[digit] = true ;
}
}
// For every digit from 0 to 9
for ( int i = 0; i < MAX; i++)
{
// If the current digit is
// not present in str
if (!present[i])
return false ;
}
return true ;
} // Driver code public static void Main(String[] args)
{ String str = "Geeks12345for69708" ;
int len = str.Length;
if (allDigits(str, len))
Console.Write( "Yes" );
else
Console.Write( "No" );
} } // This code is contributed by 29AjayKumar |
<script> // JavaScript implementation of the approach let MAX = 10; // Function that returns true // if ch is a digit function isDigit(ch)
{ if (ch >= '0' && ch <= '9' )
return true ;
return false ;
} // Function that returns true // if str contains all the // digits from 0 to 9 function allDigits(str, len)
{ // To mark the present digits
let present = Array.from({length: MAX}, (_, i) => 0);
// For every character of the String
for (let i = 0; i < len; i++)
{
// If the current character is a digit
if (isDigit(str[i]))
{
// Mark the current digit as present
let digit = str[i] - '0' ;
present[digit] = true ;
}
}
// For every digit from 0 to 9
for (let i = 0; i < MAX; i++)
{
// If the current digit is
// not present in str
if (!present[i])
return false ;
}
return true ;
} // Driver code let str = "Geeks12345for69708" ;
let len = str.length;
if (allDigits(str, len))
document.write( "Yes" );
else
document.write( "No" );
</script> |
Yes
Time Complexity: O(n)
Auxiliary Space: O(1), no extra space is required, so it is a constant.