Check whether a given string is Heterogram or not
Given a string S. The task is to check whether a the given string is Heterogram or not. A heterogram is a word, phrase, or sentence in which no letter of the alphabet occurs more than once.
Examples:
Input : S = "the big dwarf only jumps" Output : Yes Each alphabet in the string S is occurred only once. Input : S = "w3wiki" Output : No Since alphabet 'g', 'e', 'k', 's' occurred more than once.
The idea is to make a hash array of size 26, initialised to 0. Traverse each alphabet of the given string and mark 1 in the corresponding hash array position if that alphabet is encounter first time, else return false.
Below is the implementation of this approach:
C++
// C++ Program to check whether the given string is Heterogram or not. #include<bits/stdc++.h> using namespace std; bool isHeterogram( char s[], int n) { int hash[26] = { 0 }; // traversing the string. for ( int i = 0; i < n; i++) { // ignore the space if (s[i] != ' ' ) { // if already encountered if (hash[s[i] - 'a' ] == 0) hash[s[i] - 'a' ] = 1; // else return false. else return false ; } } return true ; } // Driven Program int main() { char s[] = "the big dwarf only jumps" ; int n = strlen (s); (isHeterogram(s, n))?(cout << "YES" ):(cout << "NO" ); return 0; } |
Java
// Java Program to check whether the // given string is Heterogram or not. class GFG { static boolean isHeterogram(String s, int n) { int hash[] = new int [ 26 ]; // traversing the string. for ( int i = 0 ; i < n; i++) { // ignore the space if (s.charAt(i) != ' ' ) { // if already encountered if (hash[s.charAt(i) - 'a' ] == 0 ) hash[s.charAt(i) - 'a' ] = 1 ; // else return false. else return false ; } } return true ; } // Driver code public static void main (String[] args) { String s = "the big dwarf only jumps" ; int n = s.length(); if (isHeterogram(s, n)) System.out.print( "YES" ); else System.out.print( "NO" ); } } // This code is contributed by Anant Agarwal. |
Python3
# Python3 code to check # whether the given # string is Heterogram # or not. def isHeterogram(s, n): hash = [ 0 ] * 26 # traversing the # string. for i in range (n): # ignore the space if s[i] ! = ' ' : # if already # encountered if hash [ ord (s[i]) - ord ( 'a' )] = = 0 : hash [ ord (s[i]) - ord ( 'a' )] = 1 # else return false. else : return False return True # Driven Code s = "the big dwarf only jumps" n = len (s) print ( "YES" if isHeterogram(s, n) else "NO" ) # This code is contributed by "Sharad_Bhardwaj". |
C#
// C# Program to check whether the // given string is Heterogram or not. using System; class GFG { static bool isHeterogram( string s, int n) { int []hash = new int [26]; // traversing the string. for ( int i = 0; i < n; i++) { // ignore the space if (s[i] != ' ' ) { // if already encountered if (hash[s[i] - 'a' ] == 0) hash[s[i] - 'a' ] = 1; // else return false. else return false ; } } return true ; } // Driver code public static void Main () { string s = "the big dwarf only jumps" ; int n = s.Length; if (isHeterogram(s, n)) Console.WriteLine( "YES" ); else Console.WriteLine( "NO" ); } } // This code is contributed by Vt_m. |
PHP
<?php // PHP Program to check // whether the given string // is Heterogram or not. function isHeterogram( $s , $n ) { $hash = array (); for ( $i = 0; $i < 26; $i ++) $hash [ $i ] = 0; // traversing the string. for ( $i = 0; $i < $n ; $i ++) { // ignore the space if ( $s [ $i ] != ' ' ) { // if already encountered if ( $hash [ord( $s [ $i ]) - ord( 'a' )] == 0) $hash [ord( $s [ $i ]) - ord( 'a' )] = 1; // else return false. else return false; } } return true; } // Driven Code $s = "the big dwarf only jumps" ; $n = strlen ( $s ); if (isHeterogram( $s , $n )) echo ( "YES" ); else echo ( "NO" ); // This code is contributed by // Manish Shaw(manishshaw1) ?> |
Javascript
<script> // Javascript program to check whether // the given string is Heterogram or not. function isHeterogram(s, n) { var hash = Array(26).fill(0); // Traversing the string. for ( var i = 0; i < n; i++) { // Ignore the space if (s[i] != ' ' ) { // If already encountered if (hash[s[i].charCodeAt(0) - 'a' .charCodeAt(0)] == 0) hash[s[i].charCodeAt(0) - 'a' .charCodeAt(0)] = 1; // Else return false. else return false ; } } return true ; } // Driver code var s = "the big dwarf only jumps" ; var n = s.length; (isHeterogram(s, n)) ? (document.write( "YES" )) : (document.write( "NO" )); // This code is contributed by rutvik_56 </script> |
Output
YES
Time Complexity: O(N)
Auxiliary Space: O(26)