Check if two strings are same ignoring their cases

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++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include <iostream>
using namespace std;
  
// Function to compare two strings
// ignoring their cases
bool 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 bnext character
        if (str1[i] == str2[i]) {
            i++;
        }
  
        // if any character of first strinf
        // 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 equal
void equalIgnoreCaseUtil(string str1, string str2)
{
    bool res = equalIgnoreCase(str1, str2);
  
    if (res == true)
        cout << "Same" << endl;
  
    else
        cout << "Not Same" << endl;
}
  
// Driver Code
int main()
{
    string str1, str2;
  
    str1 = "Geeks";
    str2 = "geeks";
    equalIgnoreCaseUtil(str1, str2);
  
    str1 = "Geek";
    str2 = "geeksforgeeks";
    equalIgnoreCaseUtil(str1, str2);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

class GFG
{
// Function to compare two strings 
// ignoring their cases 
static 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 bnext character 
        if (str1.charAt(i) == str2.charAt(i)) 
        
            i++; 
        
  
        // if any character of first strinf 
        // 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 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 is contributed by Arnab Kundu

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Function to compare two strings
# ignoring their cases
def 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 bnext character
        if (str1[i] == str2[i]):
            i += 1
  
        # if any character of first strinf
        # 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 equal
def equalIgnoreCaseUtil(str1, str2):
    res = equalIgnoreCase(str1, str2)
  
    if (res == True):
        print("Same")
  
    else:
        print("Not Same")
  
# Driver Code
if __name__ == '__main__':
    str1 = "Geeks"
    str2 = "geeks"
    equalIgnoreCaseUtil(str1, str2)
  
    str1 = "Geek"
    str2 = "geeksforgeeks"
    equalIgnoreCaseUtil(str1, str2)
  
# This code is contributed by
# Surendra_Gangwar

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

using System;
class GFG
{
// Function to compare two strings 
// ignoring their cases 
static 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 lenght 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 bnext character 
        if (str1[i] == str2[i]) 
        
            i++; 
        
  
        // if any character of first strinf 
        // 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 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 is contributed by ihritik

chevron_right


Output:

Same
Not Same

Method 2: Using toUpperCase() function

  1. Change all lowercase characters of both string to uppercase and compare them.
  2. If they are equal, print “same” otherwise print “Not Same”.

The implementation is given below.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<bits/stdc++.h> 
using namespace std; 
  
// Function to compare two strings ignoring their cases
bool 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 equal
void equalIgnoreCaseUtil(string str1, string str2)
{
    bool res = equalIgnoreCase(str1, str2);
  
    if (res == true)
        cout << "Same" << endl;
  
    else
        cout << "Not Same" << endl;
}
  
// Driver Code
int main()
{
    string str1, str2;
  
    str1 = "Geeks";
    str2 = "geeks";
    equalIgnoreCaseUtil(str1, str2);
  
    str1 = "Geek";
    str2 = "geeksforgeeks";
    equalIgnoreCaseUtil(str1, str2);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

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

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 Code for above approach
  
# Function to compare two strings
# ignoring their cases 
def 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 equal 
def equalIgnoreCaseUtil(str1, str2) :
  
    res = equalIgnoreCase(str1, str2); 
  
    if (res == True) :
        print("Same"); 
    else :
        print("Not Same"); 
  
# Driver Code 
if __name__ == "__main__"
  
    str1 = "Geeks"
    str2 = "geeks"
    equalIgnoreCaseUtil(str1, str2); 
  
    str1 = "Geek"
    str2 = "geeksforgeeks"
    equalIgnoreCaseUtil(str1, str2); 
  
# This code is contributed by Ryuga

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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 */

chevron_right


Output:

Same
Not Same

Method 3: Using toLowerCase() function

  1. Change all characters of both string to lowercase and compare them.
  2. If they are equal, print “same” otherwise print “Not Same”.

The implementation is given below.

C++

filter_none

edit
close

play_arrow

link
brightness_4
code

#include<bits/stdc++.h> 
using namespace std; 
  
// Function to compare two strings ignoring their cases
bool 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 equal
void equalIgnoreCaseUtil(string str1, string str2)
{
    bool res = equalIgnoreCase(str1, str2);
  
    if (res == true)
        cout << "Same" << endl;
  
    else
        cout << "Not Same" << endl;
}
  
// Driver Code
int main()
{
    string str1, str2;
  
    str1 = "Geeks";
    str2 = "geeks";
    equalIgnoreCaseUtil(str1, str2);
  
    str1 = "Geek";
    str2 = "geeksforgeeks";
    equalIgnoreCaseUtil(str1, str2);
    return 0;
}

chevron_right


Java

filter_none

edit
close

play_arrow

link
brightness_4
code

// A Java Program to find the longest common prefix
class GFG 
{
  
// Function to compare two strings ignoring their cases
static 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 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 contributed by Rajput-Ji

chevron_right


Python3

filter_none

edit
close

play_arrow

link
brightness_4
code

# Python 3 Code for above approach
  
# Function to compare two strings
# ignoring their cases 
def 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 equal 
def equalIgnoreCaseUtil(str1, str2) :
  
    res = equalIgnoreCase(str1, str2); 
  
    if (res == True) :
        print("Same"); 
    else :
        print("Not Same"); 
  
# Driver Code 
if __name__ == "__main__"
  
    str1 = "Geeks"
    str2 = "geeks"
    equalIgnoreCaseUtil(str1, str2); 
  
    str1 = "Geek"
    str2 = "geeksforgeeks"
    equalIgnoreCaseUtil(str1, str2); 
  
# This code is contributed by ihritik

chevron_right


C#

filter_none

edit
close

play_arrow

link
brightness_4
code

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 */

chevron_right


Output:

Same
Not Same


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.