Java Anagram: HackerRank Problem Solution in Java
Table of contents
Anagram:
The dictionary meaning of the word anagram is a word or phrase formed by rearranging the letters.
Two strings are said to be anagrams if they make a meaningful word by rearranging or shuffling the letters of the string. In other words, we can say that two strings are anagrams if they contain the same characters but in different order. Note that a letter has to be used only once.
Problem Statement:
Two strings, a and b, are called anagrams if they contain all the same characters in the same frequencies. For this challenge, the test is not case-sensitive. For example, the anagrams of CAT
are CAT
, ACT
, tac
, TCA
, aTC
, and CtA
.
Function Description
Complete the isAnagram function in the editor.
isAnagram has the following parameters:
string a: the first string
string b: the second string
Returns
- boolean: If a and b are case-insensitive anagrams, return true. Otherwise, return false.
Input Format
The first line contains a string a.
The second line contains a string b.
Constraints
1<= length(a),length(b) <= 50
Strings a and b consist of English alphabetic characters.
The comparison should NOT be case sensitive.
Sample Input 0
anagram
margana
Sample Output 0
Anagrams
Explanation 0
Character | Frequency: anagram | Frequency: margana |
A or a | 3 | 3 |
G or g | 1 | 1 |
N or n | 1 | 1 |
M or m | 1 | 1 |
R or r | 1 | 1 |
The two strings contain all the same letters in the same frequencies, so we print "Anagrams".
Sample Input 1
anagramm
marganaa
Sample Output 1
Not Anagrams
Explanation 1
Character | Frequency: anagramm | Frequency: marganaa |
A or a | 3 | 4 |
G or g | 1 | 1 |
N or n | 1 | 1 |
M or m | 2 | 1 |
R or r | 1 | 1 |
The two strings don't contain the same number of a
's and m
's, so we print "Not Anagrams".
Sample Input 2
Hello
hello
Sample Output 2
Anagrams
Explanation 2
Character | Frequency: Hello | Frequency: hello |
E or e | 1 | 1 |
H or h | 1 | 1 |
L or l | 2 | 2 |
O or o | 1 | 1 |
The two strings contain all the same letters in the same frequencies, so we print "Anagrams".
Solution:
Language: Java
import java.util.Scanner;
public class Solution
{
static boolean isAnagram(String a, String b)
{
String A=a.toLowerCase();
String B=b.toLowerCase();
if(A.length()!=B.length()) return false;
for(int i=0;i<A.length();i++)
{
int countA=0;
int countB=0;
for(int j=0;j<A.length();j++){
if (A.charAt(i)==A.charAt(j)) countA++;
if (A.charAt(i)==B.charAt(j)) countB++;
}
if(countA==countB) continue;
else return false;
}
return true;
}
public static void main(String[] args)
{
Scanner scan = new Scanner(System.in);
String a = scan.next();
String b = scan.next();
scan.close();
boolean ret = isAnagram(a, b);
System.out.println( (ret) ? "Anagrams" : "Not Anagrams" );
}
}
Subscribe to my newsletter
Read articles from Navnath Jadhav directly inside your inbox. Subscribe to the newsletter, and don't miss out.
Written by
Navnath Jadhav
Navnath Jadhav
I am a Software Developer