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++
#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 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 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; } |
Java
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 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 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 |
Python3
# 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 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 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 |
C#
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 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 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 |
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”.
The implementation is given below.
C++
#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; } |
Java
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 |
Python3
# 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 |
C#
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 */ |
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”.
The implementation is given below.
C++
#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; } |
Java
// 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 |
Python3
# 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 |
C#
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 */ |
Same Not Same
Attention reader! Don’t stop learning now. Get hold of all the important DSA concepts with the DSA Self Paced Course at a student-friendly price and become industry ready.