Check if a string is Isogram or not (original) (raw)

Last Updated : 19 Sep, 2022

Given a word or phrase, check if it is an isogram or not. An Isogram is a word in which no letter occurs more than once

Examples:

Input: Machine
Output: True
Explanation: "Machine" does not have any character repeating, it is an Isogram

Input : Geek
Output : False
Explanation: "Geek" has 'e' as repeating character, it is not an Isogram

Try It Yourselfredirect icon

Check if a string is Isogram or not using sorting:

To solve the problem follow the below idea:

Sort the string and for every character check, if the current character is equal to the previous character or not. If it is equal then the string is not an isogram

Follow the given steps to solve the problem:

Below is the implementation of the above approach:

C++ `

// C++ program to check // If a given string is isogram or not #include <bits/stdc++.h> using namespace std;

// Function to check // If a given string is isogram or not string is_isogram(string str) { int len = str.length();

// Convert the string in lower case letters
for (int i = 0; i < len; i++)
    str[i] = tolower(str[i]);

sort(str.begin(), str.end());

for (int i = 0; i < len; i++) {
    if (str[i] == str[i + 1])
        return "False";
}
return "True";

}

// Driver code int main() { string str1 = "Machine";

  // Function call
cout << is_isogram(str1) << endl;

string str2 = "isogram";

  // Function call
cout << is_isogram(str2) << endl;

string str3 = "GeeksforGeeks";

  // Function call
cout << is_isogram(str3) << endl;

string str4 = "Alphabet";

  // Function call
cout << is_isogram(str4) << endl;

return 0;

}

// Contributed by nuclode

Java

// Java program to check // if a given string is isogram or not import java.io.; import java.util.;

class GFG { // Function to check // if a given string is isogram or not static boolean is_isogram(String str) { // Convert the string in lower case letters str = str.toLowerCase(); int len = str.length();

    char arr[] = str.toCharArray();

    Arrays.sort(arr);
    for (int i = 0; i < len - 1; i++) {
        if (arr[i] == arr[i + 1])
            return false;
    }
    return true;
}

// Driver code
public static void main(String[] args)
{
    String str1 = "Machine";
  
      // Function call
    System.out.println(is_isogram(str1));

    String str2 = "isogram";
  
      // Function call
    System.out.println(is_isogram(str2));

    String str3 = "GeeksforGeeks";
  
      // Function call
    System.out.println(is_isogram(str3));

    String str4 = "Alphabet";
  
      // Function call
    System.out.println(is_isogram(str4));
}

}

// Contributed by Pramod Kumar

Python3

Python program to check

if a word is isogram or not

def is_isogram(word):

# Convert the word or sentence in lower case letters.
clean_word = word.lower()

# Make an empty list to append unique letters
letter_list = []

for letter in clean_word:

    # If letter is an alphabet then only check
    if letter.isalpha():
        if letter in letter_list:
            return False
        letter_list.append(letter)

return True

Driver code

if name == 'main':

  # Function call
print(is_isogram("Machine"))
print(is_isogram("isogram"))
print(is_isogram("GeeksforGeeks"))
print(is_isogram("Alphabet "))

C#

// C# program to check if a given // string is isogram or not using System;

public class GFG {

// Function to check if a given
// string is isogram or not
static bool is_isogram(string str)
{
    // Convert the string in lower case letters
    str = str.ToLower();
    int len = str.Length;

    char[] arr = str.ToCharArray();

    Array.Sort(arr);
    for (int i = 0; i < len - 1; i++) {
        if (arr[i] == arr[i + 1])
            return false;
    }
    return true;
}

// Driver code
public static void Main()
{
    string str1 = "Machine";
  
      // Function call
    Console.WriteLine(is_isogram(str1));

    string str2 = "isogram";
  
      // Function call
    Console.WriteLine(is_isogram(str2));

    string str3 = "GeeksforGeeks";
  
      // Function call
    Console.WriteLine(is_isogram(str3));

    string str4 = "Alphabet";
  
      // Function call
    Console.WriteLine(is_isogram(str4));
}

}

// This code is contributed by Sam007

JavaScript

`

Output

True True False False

Time Complexity: O(N log N)
Auxiliary Space: O(1)

Check if a string is Isogram or not using Hash-Map:

To solve the problem follow the below idea:

In this, the count of characters of the string is stored in the hashmap, and wherever it is found to be greater than 1 for any char, return false else return true at the end

Follow the given steps to solve the problem:

Below is the implementation of the above approach:

C++ `

// CPP code to check string is isogram or not #include <bits/stdc++.h>

using namespace std;

// function to check isogram bool check_isogram(string str) {

int length = str.length();
int mapHash[26] = { 0 };

// loop to store count of chars and check if it is
// greater than 1
for (int i = 0; i < length; i++) {
    mapHash[str[i] - 'a']++;

    // if count > 1, return false
    if (mapHash[str[i] - 'a'] > 1) {
        return false;
    }
}

return true;

}

// Driver code int main() { string str = "geeks"; string str2 = "computer";

// checking str as isogram
if (check_isogram(str)) {
    cout << "True" << endl;
}
else {
    cout << "False" << endl;
}

// checking str2 as isogram
if (check_isogram(str2)) {
    cout << "True" << endl;
}
else {
    cout << "False" << endl;
}

return 0;

}

Java

// Java code to check string is isogram or not import java.io.*;

class GFG {

// function to check isogram
static boolean check_isogram(String str)
{

    int length = str.length();
    int mapHash[] = new int[26];

    // loop to store count of chars and
    // check if it is greater than 1
    for (int i = 0; i < length; i++) {
        mapHash[str.charAt(i) - 'a']++;

        // if count > 1, return false
        if (mapHash[str.charAt(i) - 'a'] > 1) {
            return false;
        }
    }

    return true;
}

// Driver code
public static void main(String[] args)
{
    String str = "geeks";
    String str2 = "computer";

    // checking str as isogram
    if (check_isogram(str))
        System.out.println("True");
    else
        System.out.println("False");

    // checking str2 as isogram
    if (check_isogram(str2))
        System.out.println("True");
    else
        System.out.println("False");
}

}

// This code contributed by Rajput-Ji

Python3

Python3 code to check string is isogram or not

function to check isogram

def check_isogram(string):

length = len(string)
mapHash = [0] * 26

# loop to store count of chars
# and check if it is greater than 1
for i in range(length):

    mapHash[ord(string[i]) - ord('a')] += 1

    # if count > 1, return false
    if (mapHash[ord(string[i]) - ord('a')] > 1):

        return False

return True

Driver code

if name == "main":

string = "geeks"
string2 = "computer"

# checking str as isogram
if (check_isogram(string)):
    print("True")
else:
    print("False")

# checking str2 as isogram
if (check_isogram(string2)):
    print("True")

else:
    print("False")

This code is contributed by AnkitRai01

C#

// C# code to check string is isogram or not using System; public class GFG {

// function to check isogram
static bool check_isogram(String str)
{

    int length = str.Length;
    int[] mapHash = new int[26];

    // loop to store count of chars and
    // check if it is greater than 1
    for (int i = 0; i < length; i++) {
        mapHash[str[i] - 'a']++;

        // if count > 1, return false
        if (mapHash[str[i] - 'a'] > 1) {
            return false;
        }
    }

    return true;
}

// Driver code
public static void Main(String[] args)
{
    String str = "geeks";
    String str2 = "computer";

    // checking str as isogram
    if (check_isogram(str))
        Console.WriteLine("True");
    else
        Console.WriteLine("False");

    // checking str2 as isogram
    if (check_isogram(str2))
        Console.WriteLine("True");
    else
        Console.WriteLine("False");
}

}

// This code has been contributed by 29AjayKumar

JavaScript

`

Time Complexity: O(N)
Auxiliary Space: O(1), as an array of fixed size 26 is used.

Thanks Sahil Bansal for suggesting the above method.
If you like GeeksforGeeks (We know you do!) and would like to contribute, you can also write an article using write.geeksforgeeks.org or mail your article to review-team@geeksforgeeks.org.