Check if two strings are same ignoring their cases

19 Jul, 2021
Given two strings str1 and str2. The task is to check if the two given strings are same if a case-insensitive comparison is followed, i.e., the cases of the strings are ignored in Java.Examples:  
Input: str1 = "Geeks", str2 = "geeks"
Output: Same

Input: str1 = "Geek", str2 = "geeksforgeeks"
Output: Not Same
Method 1: Naive Approach  
Compare each character of the first string with the corresponding character of the second string.
if it is matched, compare next character.
If it does not match check if it is matched by ignoring their cases.
If matched, compare next character.
If all characters matched, return true
If any character is not matched, return false.
The implementation is given below.  
C++
Java
Python3
C#
Javascript
#include <iostream>using namespace std; // Function to compare two strings// ignoring their casesbool equalIgnoreCase(string str1, string str2){    int i = 0;     // length of first string    int len1 = str1.size();     // length of second string    int len2 = str2.size();     // if length is not same    // simply return false since both string    // can not be same if length is not equal    if (len1 != len2)        return false;     // loop to match one by one    // all characters of both string    while (i < len1) {         // if current characters of both string are same,        // increase value of i to compare next character        if (str1[i] == str2[i]) {            i++;        }         // if any character of first string        // is some special character        // or numeric character and        // not same as corresponding character        // of second string then return false        else if (!((str1[i] >= 'a' && str1[i] <= 'z')                   || (str1[i] >= 'A' && str1[i] <= 'Z'))) {            return false;        }         // do the same for second string        else if (!((str2[i] >= 'a' && str2[i] <= 'z')                   || (str2[i] >= 'A' && str2[i] <= 'Z'))) {            return false;        }         // this block of code will be executed        // if characters of both strings        // are of different cases        else {            // compare characters by ASCII value            if (str1[i] >= 'a' && str1[i] <= 'z') {                if (str1[i] - 32 != str2[i])                    return false;            }             else if (str1[i] >= 'A' && str1[i] <= 'Z') {                if (str1[i] + 32 != str2[i])                    return false;            }             // if characters matched,            // increase the value of i to compare next char            i++;         } // end of outer else block     } // end of while loop     // if all characters of the first string    // are matched with corresponding    // characters of the second string,    // then return true    return true; } // end of equalIgnoreCase function // Function to print the same or not same// if strings are equal or not equalvoid equalIgnoreCaseUtil(string str1, string str2){    bool res = equalIgnoreCase(str1, str2);     if (res == true)        cout << "Same" << endl;     else        cout << "Not Same" << endl;} // Driver Codeint main(){    string str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);    return 0;}
class GFG{// Function to compare two strings// ignoring their casesstatic boolean equalIgnoreCase(String str1, String str2){    int i = 0;     // length of first string    int len1 = str1.length();     // length of second string    int len2 = str2.length();     // if length is not same    // simply return false since both string    // can not be same if length is not equal    if (len1 != len2)        return false;     // loop to match one by one    // all characters of both string    while (i < len1)    {         // if current characters of both string are same,        // increase value of i to compare next character        if (str1.charAt(i) == str2.charAt(i))        {            i++;        }         // if any character of first string        // is some special character        // or numeric character and        // not same as corresponding character        // of second string then return false        else if (!((str1.charAt(i) >= 'a' && str1.charAt(i) <= 'z')                || (str1.charAt(i) >= 'A' && str1.charAt(i) <= 'Z')))        {            return false;        }         // do the same for second string        else if (!((str2.charAt(i) >= 'a' && str2.charAt(i) <= 'z')                || (str2.charAt(i) >= 'A' && str2.charAt(i) <= 'Z')))        {            return false;        }         // this block of code will be executed        // if characters of both strings        // are of different cases        else        {            // compare characters by ASCII value            if (str1.charAt(i) >= 'a' && str1.charAt(i) <= 'z')            {                if (str1.charAt(i) - 32 != str2.charAt(i))                    return false;            }             else if (str1.charAt(i) >= 'A' && str1.charAt(i) <= 'Z')            {                if (str1.charAt(i) + 32 != str2.charAt(i))                    return false;            }             // if characters matched,            // increase the value of i to compare next char            i++;         } // end of outer else block     } // end of while loop     // if all characters of the first string    // are matched with corresponding    // characters of the second string,    // then return true    return true; } // end of equalIgnoreCase function // Function to print the same or not same// if strings are equal or not equalstatic void equalIgnoreCaseUtil(String str1, String str2){    boolean res = equalIgnoreCase(str1, str2);     if (res == true)        System.out.println( "Same" );     else        System.out.println( "Not Same" );} // Driver Codepublic static void main(String args[]){    String str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);}} // This code is contributed by Arnab Kundu
# Function to compare two strings# ignoring their casesdef equalIgnoreCase(str1, str2):    i = 0     # length of first string    len1 = len(str1)     # length of second string    len2 = len(str2)     # if length is not same    # simply return false since both string    # can not be same if length is not equal    if (len1 != len2):        return False     # loop to match one by one    # all characters of both string    while (i < len1):                 # if current characters of both string are same,        # increase value of i to compare next character        if (str1[i] == str2[i]):            i += 1         # if any character of first string        # is some special character        # or numeric character and        # not same as corresponding character        # of second string then return false        elif (((str1[i] >= 'a' and str1[i] <= 'z') or               (str1[i] >= 'A' and str1[i] <= 'Z')) == False):            return False         # do the same for second string        elif (((str2[i] >= 'a' and str2[i] <= 'z') or               (str2[i] >= 'A' and str2[i] <= 'Z')) == False):            return False         # this block of code will be executed        # if characters of both strings        # are of different cases        else:                         # compare characters by ASCII value            if (str1[i] >= 'a' and str1[i] <= 'z'):                if (ord(str1[i]) - 32 != ord(str2[i])):                    return False             elif (str1[i] >= 'A' and str1[i] <= 'Z'):                if (ord(str1[i]) + 32 != ord(str2[i])):                    return False             # if characters matched,            # increase the value of i            # to compare next char            i += 1         # end of outer else block     # end of while loop     # if all characters of the first string    # are matched with corresponding    # characters of the second string,    # then return true    return True # end of equalIgnoreCase function # Function to print the same or not same# if strings are equal or not equaldef equalIgnoreCaseUtil(str1, str2):    res = equalIgnoreCase(str1, str2)     if (res == True):        print("Same")     else:        print("Not Same") # Driver Codeif __name__ == '__main__':    str1 = "Geeks"    str2 = "geeks"    equalIgnoreCaseUtil(str1, str2)     str1 = "Geek"    str2 = "geeksforgeeks"    equalIgnoreCaseUtil(str1, str2) # This code is contributed by# Surendra_Gangwar
using System;class GFG{// Function to compare two strings// ignoring their casesstatic bool equalIgnoreCase(string str1, string str2){    int i = 0;     // length of first string    int len1 = str1.Length;     // length of second string    int len2 = str2.Length;     // if length is not same    // simply return false since both string    // can not be same if length is not equal    if (len1 != len2)        return false;     // loop to match one by one    // all characters of both string    while (i < len1)    {         // if current characters of both string are same,        // increase value of i to compare next character        if (str1[i] == str2[i])        {            i++;        }         // if any character of first string        // is some special character        // or numeric character and        // not same as corresponding character        // of second string then return false        else if (!((str1[i] >= 'a' && str1[i] <= 'z')                || (str1[i] >= 'A' && str1[i] <= 'Z')))        {            return false;        }         // do the same for second string        else if (!((str2[i] >= 'a' && str2[i] <= 'z')                || (str2[i] >= 'A' && str2[i] <= 'Z')))        {            return false;        }         // this block of code will be executed        // if characters of both strings        // are of different cases        else        {            // compare characters by ASCII value            if (str1[i] >= 'a' && str1[i] <= 'z')            {                if (str1[i] - 32 != str2[i])                    return false;            }             else if (str1[i] >= 'A' && str1[i] <= 'Z')            {                if (str1[i] + 32 != str2[i])                    return false;            }             // if characters matched,            // increase the value of i to compare next char            i++;         } // end of outer else block     } // end of while loop     // if all characters of the first string    // are matched with corresponding    // characters of the second string,    // then return true    return true; } // end of equalIgnoreCase function // Function to print the same or not same// if strings are equal or not equalstatic void equalIgnoreCaseUtil(string str1, string str2){    bool res = equalIgnoreCase(str1, str2);     if (res == true)        Console.WriteLine( "Same" );     else        Console.WriteLine( "Not Same" );} // Driver Codepublic static void Main(){    string str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);}} // This code is contributed by ihritik
<script>    // Function to compare two strings    // ignoring their cases    function equalIgnoreCase(str1, str2)    {        let i = 0;         // length of first string        let len1 = str1.length;         // length of second string        let len2 = str2.length;         // if length is not same        // simply return false since both string        // can not be same if length is not equal        if (len1 != len2)            return false;         // loop to match one by one        // all characters of both string        while (i < len1)        {             // if current characters of both string are same,            // increase value of i to compare next character            if (str1[i] == str2[i])            {                i++;            }             // if any character of first string            // is some special character            // or numeric character and            // not same as corresponding character            // of second string then return false            else if (!((str1[i].charCodeAt() >= 'a'.charCodeAt() && str1[i].charCodeAt() <= 'z'.charCodeAt())                    || (str1[i].charCodeAt() >= 'A'.charCodeAt() && str1[i].charCodeAt() <= 'Z'.charCodeAt())))            {                return false;            }             // do the same for second string            else if (!((str2[i].charCodeAt() >= 'a'.charCodeAt() && str2[i].charCodeAt() <= 'z'.charCodeAt())                    || (str2[i].charCodeAt() >= 'A'.charCodeAt() && str2[i].charCodeAt() <= 'Z'.charCodeAt())))            {                return false;            }             // this block of code will be executed            // if characters of both strings            // are of different cases            else            {                // compare characters by ASCII value                if (str1[i].charCodeAt() >= 'a'.charCodeAt() && str1[i].charCodeAt() <= 'z'.charCodeAt())                {                    if (str1[i].charCodeAt() - 32 != str2[i].charCodeAt())                        return false;                }                 else if (str1[i].charCodeAt() >= 'A'.charCodeAt() && str1[i].charCodeAt() <= 'Z'.charCodeAt())                {                    if (str1[i].charCodeAt() + 32 != str2[i].charCodeAt())                        return false;                }                 // if characters matched,                // increase the value of i to compare next char                i++;             } // end of outer else block         } // end of while loop         // if all characters of the first string        // are matched with corresponding        // characters of the second string,        // then return true        return true;     } // end of equalIgnoreCase function     // Function to print the same or not same    // if strings are equal or not equal    function equalIgnoreCaseUtil(str1, str2)    {        let res = equalIgnoreCase(str1, str2);         if (res == true)            document.write( "Same" + "</br>");         else            document.write( "Not Same"  + "</br>");    }         let str1, str2;       str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);       str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);         // This code is contributed by diveshrabadiya07.</script>
Same
Not Same
 
Method 2: Using toUpperCase() function 
Change all lowercase characters of both string to uppercase and compare them.If they are equal, print “same” otherwise print “Not Same”.
Change all lowercase characters of both string to uppercase and compare them.
If they are equal, print “same” otherwise print “Not Same”.
The implementation is given below.  
C++
Java
Python3
C#
Javascript
#include<bits/stdc++.h>using namespace std; // Function to compare two strings ignoring their casesbool equalIgnoreCase(string str1, string str2){    int i = 0;     // Convert to uppercase    // using transform() function and ::toupper in STL    transform(str1.begin(), str1.end(), str1.begin(), ::toupper);    transform(str2.begin(), str2.end(), str2.begin(), ::toupper);     // Comparing both using inbuilt function    int x = str1.compare(str2);     // if strings are equal,    // return true otherwise false    if (x != 0)        return false;    else        return true;} // Function to print the same or not same// if strings are equal or not equalvoid equalIgnoreCaseUtil(string str1, string str2){    bool res = equalIgnoreCase(str1, str2);     if (res == true)        cout << "Same" << endl;     else        cout << "Not Same" << endl;} // Driver Codeint main(){    string str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);    return 0;}
class GFG{    // Function to compare two Strings ignoring their cases    static boolean equalIgnoreCase(String str1, String str2)    {        int i = 0;         // Convert to lowercase        // using toUpperCase function        str1 = str1.toUpperCase();        str2 = str2.toUpperCase();         // Comparing both using inbuilt function        int x = str1.compareTo(str2);         // if Strings are equal,        // return true otherwise false        if (x != 0)        {            return false;        }        else        {            return true;        }    }     // Function to print the same or not same    // if Strings are equal or not equal    static void equalIgnoreCaseUtil(String str1, String str2)    {        boolean res = equalIgnoreCase(str1, str2);         if (res == true)        {            System.out.println("Same");        }        else        {            System.out.println("Not Same");        }    }     // Driver Code    public static void main(String[] args)    {        String str1, str2;         str1 = "Geeks";        str2 = "geeks";        equalIgnoreCaseUtil(str1, str2);         str1 = "Geek";        str2 = "geeksforgeeks";        equalIgnoreCaseUtil(str1, str2);    }} // This code has been contributed by 29AjayKumar
# Python 3 Code for above approach # Function to compare two strings# ignoring their casesdef equalIgnoreCase(str1, str2) :     # Convert to uppercase    str1 = str1.upper();    str2 = str2.upper();     # if strings are equal,    # return true otherwise false    x = str1 == str2;         return x; # Function to print the same or not same# if strings are equal or not equaldef equalIgnoreCaseUtil(str1, str2) :     res = equalIgnoreCase(str1, str2);     if (res == True) :        print("Same");    else :        print("Not Same"); # Driver Codeif __name__ == "__main__" :     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2); # This code is contributed by Ryuga
using System;public class GFG{    // Function to compare two Strings ignoring their cases    static bool equalIgnoreCase(String str1, String str2)    {         // Convert to lowercase        // using toUpperCase function        str1 = str1.ToUpper();        str2 = str2.ToUpper();         // Comparing both using inbuilt function        int x = str1.CompareTo(str2);         // if Strings are equal,        // return true otherwise false        if (x != 0)        {            return false;        }        else        {            return true;        }    }     // Function to print the same or not same    // if Strings are equal or not equal    static void equalIgnoreCaseUtil(String str1, String str2)    {        bool res = equalIgnoreCase(str1, str2);         if (res == true)        {            Console.WriteLine("Same");        }        else        {            Console.WriteLine("Not Same");        }    }     // Driver Code    public static void Main()    {        String str1, str2;         str1 = "Geeks";        str2 = "geeks";        equalIgnoreCaseUtil(str1, str2);         str1 = "Geek";        str2 = "geeksforgeeks";        equalIgnoreCaseUtil(str1, str2);    }} /* This code contributed by PrinciRaj1992 */
<script> // Function to compare two Strings ignoring their casesfunction equalIgnoreCase(str1,str2){    let i = 0;          // Convert to lowercase        // using toUpperCase function        str1 = str1.toUpperCase();        str2 = str2.toUpperCase();          // Comparing both using inbuilt function        let x = str1 == (str2);                  // if Strings are equal,        // return true otherwise false        if (!x)        {            return false;        }        else        {            return true;        }} // Function to print the same or not same    // if Strings are equal or not equalfunction equalIgnoreCaseUtil(str1,str2){    let res = equalIgnoreCase(str1, str2);          if (res == true)        {            document.write("Same<br>");        }        else        {            document.write("Not Same<br>");        }} // Driver Codelet str1, str2;  str1 = "Geeks";str2 = "geeks";equalIgnoreCaseUtil(str1, str2); str1 = "Geek";str2 = "geeksforgeeks";equalIgnoreCaseUtil(str1, str2);  // This code is contributed by avanitrachhadiya2155</script>
Same
Not Same
 
Method 3: Using toLowerCase() function  
Change all characters of both string to lowercase and compare them.If they are equal, print “same” otherwise print “Not Same”.
Change all characters of both string to lowercase and compare them.
If they are equal, print “same” otherwise print “Not Same”.
The implementation is given below.  
C++
Java
Python3
C#
Javascript
#include<bits/stdc++.h>using namespace std; // Function to compare two strings ignoring their casesbool equalIgnoreCase(string str1, string str2){    int i = 0;     // Convert to lowercase    // using transform() function and ::tolower in STL    transform(str1.begin(), str1.end(), str1.begin(), ::tolower);    transform(str2.begin(), str2.end(), str2.begin(), ::tolower);     // Comparing both using inbuilt function    int x = str1.compare(str2);     // if strings are equal,    // return true otherwise false    if (x != 0)        return false;    else        return true;} // Function to print the same or not same// if strings are equal or not equalvoid equalIgnoreCaseUtil(string str1, string str2){    bool res = equalIgnoreCase(str1, str2);     if (res == true)        cout << "Same" << endl;     else        cout << "Not Same" << endl;} // Driver Codeint main(){    string str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);    return 0;}
// A Java Program to find the longest common prefixclass GFG{ // Function to compare two strings ignoring their casesstatic boolean equalIgnoreCase(String str1, String str2){    int i = 0;     // Convert to lowercase    // using toLowerCase function    str1 = str1.toLowerCase();    str2 = str2.toLowerCase();     // Comparing both using inbuilt function    int x = str1.compareTo(str2);     // if strings are equal,    // return true otherwise false    return x == 0;} // Function to print the same or not same// if strings are equal or not equalstatic void equalIgnoreCaseUtil(String str1, String str2){    boolean res = equalIgnoreCase(str1, str2);     if (res == true)        System.out.println("Same");     else        System.out.println("Not Same");} // Driver Codepublic static void main(String[] args){    String str1, str2;     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2);}} // This code contributed by Rajput-Ji
# Python 3 Code for above approach # Function to compare two strings# ignoring their casesdef equalIgnoreCase(str1, str2) :     # Convert to lower case    str1 = str1.lower();    str2 = str2.lower();     # if strings are equal,    # return true otherwise false    x = str1 == str2;         return x; # Function to print the same or not same# if strings are equal or not equaldef equalIgnoreCaseUtil(str1, str2) :     res = equalIgnoreCase(str1, str2);     if (res == True) :        print("Same");    else :        print("Not Same"); # Driver Codeif __name__ == "__main__" :     str1 = "Geeks";    str2 = "geeks";    equalIgnoreCaseUtil(str1, str2);     str1 = "Geek";    str2 = "geeksforgeeks";    equalIgnoreCaseUtil(str1, str2); # This code is contributed by ihritik
using System; class GFG{    // Function to compare two Strings ignoring their cases    static bool equalIgnoreCase(String str1, String str2)    {         // Convert to lowercase        // using toUpperCase function        str1 = str1.ToUpper();        str2 = str2.ToUpper();         // Comparing both using inbuilt function        int x = str1.CompareTo(str2);         // if Strings are equal,        // return true otherwise false        if (x != 0)        {            return false;        }        else        {            return true;        }    }     // Function to print the same or not same    // if Strings are equal or not equal    static void equalIgnoreCaseUtil(String str1, String str2)    {        bool res = equalIgnoreCase(str1, str2);         if (res == true)        {            Console.WriteLine("Same");        }        else        {            Console.WriteLine("Not Same");        }    }     // Driver Code    public static void Main()    {        String str1, str2;         str1 = "Geeks";        str2 = "geeks";        equalIgnoreCaseUtil(str1, str2);         str1 = "Geek";        str2 = "geeksforgeeks";        equalIgnoreCaseUtil(str1, str2);    }} /* This code contributed by PrinciRaj1992 */
<script>// A Javascript Program to find the longest common prefix // Function to compare two strings ignoring their casesfunction equalIgnoreCase(str1,str2){    let i = 0;      // Convert to lowercase    // using toLowerCase function    str1 = str1.toLowerCase();    str2 = str2.toLowerCase();      // Comparing both using inbuilt function    let x = (str1 == (str2));      // if strings are equal,    // return true otherwise false    return x == true;} // Function to print the same or not same// if strings are equal or not equalfunction equalIgnoreCaseUtil(str1,str2){    let res = equalIgnoreCase(str1, str2);      if (res == true)        document.write("Same<br>");      else        document.write("Not Same<br>");} // Driver Codelet str1, str2;  str1 = "Geeks";str2 = "geeks";equalIgnoreCaseUtil(str1, str2); str1 = "Geek";str2 = "geeksforgeeks";equalIgnoreCaseUtil(str1, str2); // This code is contributed by rag2127</script>
Same
Not Same
 
ankthon
andrew1234
SURENDRA_GANGWAR
ihritik
Rajput-Ji
princiraj1992
29AjayKumar
Shivam_k
ManasChhabra2
divyeshrabadiya07
avanitrachhadiya2155
rag2127
Java-Functions
Java-String-Programs
Java Programs
Strings
Strings
Writing code in comment?
Please use ide.geeksforgeeks.org,
generate link and share the link here.