Given a string str, the task is to check if the string is a valid identifier or not. In order to qualify as a valid identifier, the string must satisfy the following conditions:
- It must start with an either underscore(_) or any of the characters from the ranges [‘a’, ‘z’] and [‘A’, ‘Z’].
- There must not be any white space in the string.
- And, all the subsequent characters after the first character must not consist of any special characters like $, #, % etc.
Examples:
Input: str= “_geeks123”
Output: ValidInput: str = “123geeks_”
Output: Invalid
Approach: Traverse the string character by character and check whether all the requirements are met for it to be a valid identifier i.e. first character can only be either ‘_’ or an English alphabet and the rest of the characters must neither be a white space or any special character.
Below is the implementation of the above approach:
// C++ implementation of the approach #include <bits/stdc++.h> using namespace std;
// Function that returns true if str // is a valid identifier bool isValid(string str, int n)
{ // If first character is invalid
if (!((str[0] >= 'a' && str[0] <= 'z' )
|| (str[0] >= 'A' && str[0] <= 'Z' )
|| str[0] == '_' ))
return false ;
// Traverse the string for the rest of the characters
for ( int i = 1; i < str.length(); i++) {
if (!((str[i] >= 'a' && str[i] <= 'z' )
|| (str[i] >= 'A' && str[i] <= 'Z' )
|| (str[i] >= '0' && str[i] <= '9' )
|| str[i] == '_' ))
return false ;
}
// String is a valid identifier
return true ;
} // Driver code int main()
{ string str = "_geeks123" ;
int n = str.length();
if (isValid(str, n))
cout << "Valid" ;
else
cout << "Invalid" ;
return 0;
} |
// Java implementation of the approach import java.util.*;
class GFG
{ // Function that returns true if str // is a valid identifier static boolean isValid(String str, int n)
{ // If first character is invalid
if (!((str.charAt( 0 ) >= 'a' && str.charAt( 0 ) <= 'z' )
|| (str.charAt( 0 )>= 'A' && str.charAt( 0 ) <= 'Z' )
|| str.charAt( 0 ) == '_' ))
return false ;
// Traverse the string for the rest of the characters
for ( int i = 1 ; i < str.length(); i++)
{
if (!((str.charAt(i) >= 'a' && str.charAt(i) <= 'z' )
|| (str.charAt(i) >= 'A' && str.charAt(i) <= 'Z' )
|| (str.charAt(i) >= '0' && str.charAt(i) <= '9' )
|| str.charAt(i) == '_' ))
return false ;
}
// String is a valid identifier
return true ;
} // Driver code public static void main(String args[])
{ String str = "_geeks123" ;
int n = str.length();
if (isValid(str, n))
System.out.println( "Valid" );
else
System.out.println( "Invalid" );
} } // This code is contributed by SURENDRA_GANGWAR |
# Python3 implementation of the approach # Function that returns true if str1 # is a valid identifier def isValid(str1, n):
# If first character is invalid
if ((( ord (str1[ 0 ]) > = ord ( 'a' ) and
ord (str1[ 0 ]) < = ord ( 'z' )) or
( ord (str1[ 0 ]) > = ord ( 'A' ) and
ord (str1[ 0 ]) < = ord ( 'Z' )) or
ord (str1[ 0 ]) = = ord ( '_' )) = = False ):
return False
# Traverse the for the rest of the characters
for i in range ( 1 , len (str1)):
if ((( ord (str1[i]) > = ord ( 'a' ) and
ord (str1[i]) < = ord ( 'z' )) or
( ord (str1[i]) > = ord ( 'A' ) and
ord (str1[i]) < = ord ( 'Z' )) or
( ord (str1[i]) > = ord ( '0' ) and
ord (str1[i]) < = ord ( '9' )) or
ord (str1[i]) = = ord ( '_' )) = = False ):
return False
# is a valid identifier
return True
# Driver code str1 = "_geeks123"
n = len (str1)
if (isValid(str1, n)):
print ( "Valid" )
else :
print ( "Invalid" )
# This code is contributed by mohit kumar |
// C# implementation of the approach using System;
class GFG
{ // Function that returns true if str // is a valid identifier static bool isValid(String str, int n)
{ // If first character is invalid
if (!((str[0] >= 'a' && str[0] <= 'z' )
|| (str[0] >= 'A' && str[0] <= 'Z' )
|| str[0] == '_' ))
return false ;
// Traverse the string for the rest of the characters
for ( int i = 1; i < str.Length; i++)
{
if (!((str[i] >= 'a' && str[i] <= 'z' )
|| (str[i] >= 'A' && str[i] <= 'Z' )
|| (str[i] >= '0' && str[i] <= '9' )
|| str[i] == '_' ))
return false ;
}
// String is a valid identifier
return true ;
} // Driver code public static void Main(String []args)
{ String str = "_geeks123" ;
int n = str.Length;
if (isValid(str, n))
Console.WriteLine( "Valid" );
else
Console.WriteLine( "Invalid" );
} } // This code contributed by Rajput-Ji |
<?php // PHP implementation of the approach // Function that returns true if str // is a valid identifier function isValid( $str , $n )
{ // If first character is invalid
if (!(( $str [0] >= 'a' && $str [0] <= 'z' ) ||
( $str [0] >= 'A' && $str [0] <= 'Z' ) ||
$str [0] == '_' ))
return false;
// Traverse the string
// for the rest of the characters
for ( $i = 1; $i < strlen ( $str ); $i ++)
{
if (!(( $str [ $i ] >= 'a' && $str [ $i ] <= 'z' ) ||
( $str [ $i ] >= 'A' && $str [ $i ] <= 'Z' ) ||
( $str [ $i ] >= '0' && $str [ $i ] <= '9' ) ||
$str [ $i ] == '_' ))
return false;
}
// String is a valid identifier
return true;
} // Driver code $str = "_geeks123" ;
$n = strlen ( $str );
if (isValid( $str , $n ))
print ( "Valid" );
else print ( "Invalid" );
// This code is contributed by Ryuga ?> |
<script> // Javascript implementation of the approach // Function that returns true if str // is a valid identifier function isValid(str,n)
{ // If first character is invalid
if (!((str[0] >= 'a' && str[0] <= 'z' )
|| (str[0]>= 'A' && str[0] <= 'Z' )
|| str[0] == '_' ))
return false ;
// Traverse the string for the rest of the characters
for (let i = 1; i < str.length; i++)
{
if (!((str[i] >= 'a' && str[i] <= 'z' )
|| (str[i] >= 'A' && str[i] <= 'Z' )
|| (str[i] >= '0' && str[i] <= '9' )
|| str[i] == '_' ))
return false ;
}
// String is a valid identifier
return true ;
} // Driver code
let str = "_geeks123" ;
let n = str.length;
if (isValid(str, n))
document.write( "Valid" );
else
document.write( "Invalid" );
// This code is contributed by patel2127 </script> |
Valid
Time Complexity: O(n), where n is length of the given string
Auxiliary Space: O(1)