Java program to check for Anagram

An anagram of a string is another string that contains the same characters, only the order of characters can be different. For example, “abcd” and “dabc” are an anagram of each other.

We are given two strings, we need to check if strings are Anagram.

Examples:

Input : "anagram", "nagaram"
Output : yes

Input : "mat", "fat"
Output : no


Method 1: Check if Two Strings Are Anagram using Array

import java.util.Arrays;

public class Main {

public static boolean checkAnagram(String s1, String s2)
{
// Remove all the white space
s1 = s1.replaceAll("\\s", "");
s2 = s2.replaceAll("\\s", "");

// Check if both length matches
if(s1.length() != s2.length())
return false;
else
{
// Convert both Strings into lower case and into Character Array
char[] arr1 = s1.toLowerCase().toCharArray();
char[] arr2 = s2.toLowerCase().toCharArray();

// Sort both Character Array
Arrays.sort(arr1);
Arrays.sort(arr2);

// Check if both arrays are equal
return (Arrays.equals(arr1, arr2));
}
}
public static void main(String []args)
{
System.out.println(checkAnagram("anagram","nagaram"));
System.out.println(checkAnagram("mat","fat"));
}
}

Console Output:
true
false



Method 2: Check Anagram using HashMap

import java.util.HashMap;

public class Main {

public static boolean checkAnagram(String s1, String s2)
{
if (s1.length() != s2.length())
return false;
HashMap<Character, Integer> map = new HashMap<Character, Integer>();
for (int i = 0; i < s1.length(); i++)
{
char c = s1.charAt(i);
if (map.containsKey(c))
map.put(c, map.get(c) + 1);
else
map.put(c, 1);
}
for (int i = 0; i < s2.length(); i++)
{
char c = s2.charAt(i);
if (map.containsKey(c))
{
if (map.get(c) == 1)
map.remove(c);
else
map.put(c, map.get(c) - 1);
} else
return false;
}
if (map.size() > 0)
return false;
return true;
}

public static void main(String []args)
{
System.out.println(checkAnagram("anagram","nagaram"));
System.out.println(checkAnagram("mat","fat"));
}
}

Console Output:
true
false



Method 3: Anagram Program using XOR

public class Main {

public static boolean checkAnagram(String s1, String s2)
{
// Remove all the white space, convert
// to lower case & character array
char[] arr1 = s1.replaceAll("\\s", "")
.toLowerCase().toCharArray();
char[] arr2 = s2.replaceAll("\\s", "")
.toLowerCase().toCharArray();
if (arr1.length != arr2.length)
return false;

int xor = 0;

for (int i = 0; i < arr1.length; i++)
{
xor ^= arr1[i] ^ arr2[i];
}

return xor == 0? true: false;
}

public static void main(String []args)
{
System.out.println(checkAnagram("anagram","nagaram"));
System.out.println(checkAnagram("mat","fat"));
}
}


Console Output:
true
false

Comments

Popular posts from this blog

Learn Java 8 streams with an example - print odd/even numbers from Array and List

Java, Spring Boot Mini Project - Library Management System - Download

Java - DES Encryption and Decryption example

Java - Blowfish Encryption and decryption Example

Google Cloud Storage + Spring Boot - File Upload, Download, and Delete

ReactJS - Bootstrap - Buttons

Top 5 Java ORM tools - 2024

Spring Boot 3 + Spring Security 6 + Thymeleaf - Registration and Login Example

File Upload, Download, And Delete - Azure Blob Storage + Spring Boot Example

Java - How to Count the Number of Occurrences of Substring in a String