Check if a string is Isogram or not
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
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:
- Convert the string into lowercase English letters
- Sort the string
- Traverse the string and check for every character
- If the current character is equal to the character on the previous index then return false
- Return true
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
<script>
// Javascript program to check if a given
// string is isogram or not
// Function to check if a given
// string is isogram or not
function is_isogram(str)
{
// Convert the string in lower case letters
str = str.toLowerCase();
let len = str.length;
let arr = str.split('');
arr.sort();
for (let i = 0; i < len - 1; i++) {
if (arr[i] == arr[i + 1])
return false;
}
return true;
}
let str1 = "Machine";
if(is_isogram(str1))
{
document.write("True" + "</br>");
}
else{
document.write("False" + "</br>");
}
let str2 = "isogram";
if(is_isogram(str2))
{
document.write("True" + "</br>");
}
else{
document.write("False" + "</br>");
}
let str3 = "GeeksforGeeks";
if(is_isogram(str3))
{
document.write("True" + "</br>");
}
else{
document.write("False" + "</br>");
}
let str4 = "Alphabet";
if(is_isogram(str4))
{
document.write("True" + "</br>");
}
else{
document.write("False" + "</br>");
}
// This code is contributed by suresh07.
</script>
OutputTrue
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:
- Declare a hashmap to store the count of the characters of the string
- Traverse the string
- Increase the count of the current character in the hashmap
- If the count of the current character is greater than one then return false
- Return true
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
<script>
// Javascript code to check string is isogram or not
// function to check isogram
function check_isogram(str)
{
let length = str.length;
let mapHash = new Array(26);
mapHash.fill(0);
// loop to store count of chars and
// check if it is greater than 1
for (let i = 0; i < length; i++)
{
mapHash[str[i].charCodeAt() - 'a'.charCodeAt()]++;
// if count > 1, return false
if (mapHash[str[i].charCodeAt() - 'a'.charCodeAt()] > 1)
{
return false;
}
}
return true;
}
let str = "geeks";
let str2 = "computer";
// checking str as isogram
if (check_isogram(str))
document.write("True" + "</br>");
else
document.write("False" + "</br>");
// checking str2 as isogram
if (check_isogram(str2))
document.write("True" + "</br>");
else
document.write("False" + "</br>");
// This code is contributed by divyeshrabadiya07.
</script>
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 [email protected].
Similar Reads
Check if all given strings are isograms or not Given an array arr containing N strings, the task is to check if all strings are isogram or not. If they are, print Yes, otherwise No. An Isogram is a word in which no letter occurs more than once. Examples: Input: arr[] = {"abcd", "derg", "erty"}Output: Yes Input: arr[] = {"agka", "lkmn"}Output: No
4 min read
Check if a string is Pangrammatic Lipogram To understand what a pangrammatic lipogram is we will break this term down into 2 terms i.e. a pangram and a lipogram Pangram: A pangram or holoalphabetic sentence is a sentence using every letter of a given alphabet at least once. The best-known English pangram is "The quick brown fox jumps over th
14 min read
Check if the given string is linear or not Given string str, the task is to check whether the given string is linear or not. If it is linear then print "Yes" else print "No".  Let the string be "abcdefghij". It can be broken as: "a" "bc" "def" "ghij" if the character a, b, c, and are equal then the given string is linear otherwise not. Ther
4 min read
Check if given String is Pangram or not Given a string s, the task is to check if it is Pangram or not. A pangram is a sentence containing all letters of the English Alphabet.Examples: Input: s = "The quick brown fox jumps over the lazy dog" Output: trueExplanation: The input string contains all characters from âaâ to âzâ.Input: s = "The
6 min read
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 o
4 min read