We were unable to load Disqus. If you are a moderator please see our troubleshooting guide.

Rajesh bammidy • 4 years ago

https://uploads.disquscdn.c...
The better solution would be:Perform XOR operation on characters of the given string

Kick The Problem • 2 years ago

Plz refer this video for proper explanation of this problem :
https://youtu.be/HzWNsKHgPSE

KAVYA SINGH • 3 years ago

You can make the length of arr 26 as its only lower case letter

Subbu Subtamanyam • 2 years ago

it is showing array index out of bounds exception

Niket Srivastav • 2 years ago

use this
s1[i]-97
instead of s1[i]

shubhangi • 2 years ago

why are we subtracting 97?

anonymous • 2 years ago

or if you can't remember ascii
just do (s1[i]-'a')

anonymous • 2 years ago

lowercase character's ascii number is 97
for a-z 97-122 for 26 characters

Sparsh Chaturvedi • 3 years ago

Where's That test case "tommarvoloriddle" , "iamlordvoldemort" :D

Kryxzl • 2 years ago

Correct Answer.✔️
Execution Time:0.04


bool isAnagram(string a, string b){
int arr[26] = {0};

if(a.length() != b.length())
return 0;

for(auto x : a)
arr[x - 'a']++;

for(auto y : b)
arr[y - 'a']--;

for(int i = 0; i < 26; i++){
if(arr[i] > 0)
return 0;
}

return 1;

}
pradeep gupta • 3 years ago

Simplest Solution-

char[] ss1=s1.toCharArray();
char[] ss2=s2.toCharArray();
Arrays.sort(ss1);
Arrays.sort(ss2);
return Arrays.equals(ss1,ss2);

Đắc Hiên Bùi • 2 years ago

it' s the same ideal with me :D

S H R Ξ Y • 2 years ago

Time: O(|a|)
Space: O(1)
https://uploads.disquscdn.c...

Uchiha • 2 years ago

Which distro is this?

S H R Ξ Y • 2 years ago
Sayantan Bose • 2 years ago

public static boolean isAnagram(String a,String b)
{
char []arr = a.toCharArray();
char []arr1 = b.toCharArray();
Arrays.sort(arr);
Arrays.sort(arr1);
String a1=String.valueOf(arr);
String b1=String.valueOf(arr1);
if(a1.equals(b1)){
return true;
}
else{
return false;
}

penny5340 • 3 years ago

Simplest sol ever ET=0.02 //
bool isAnagram(string c, string d)
{
if(c.size()!=d.size()) return 0;
else
{
int f=1;
sort(c.begin(),c.end());
sort(d.begin(),d.end());
for(int i=0;i<c.size();i++) {if(c[i]!="d[i])" {f="0;" break;}}="" return="" f;="" }="" }<="" b="">

Anmol Dalela • 2 years ago

I must admit penny, sometimes I dont give you enough credit.

penny5340 • 2 years ago

Thank U :)

Sagun Sangwan • 2 years ago

CPP SOLUTION ~ ET : 0.15


bool isAnagram(string a, string b)
{
map<char,int> mp_a,mp_b; int uq_a=0,uq_b=0;
for(int i = 0; i < a.length(); i++)
{
if(mp_a[a[i]] == 0)
{
uq_a++;
}
mp_a[a[i]]++;
}
for(int i = 0; i < b.length(); i++)
{
if(mp_b[b[i]] == 0)
{
uq_b++;
}
mp_b[b[i]]++;
}
if(uq_a!=uq_b)
{
return 0;
}
for(auto it1=mp_a.begin(),it2=mp_b.begin();it1!=mp_a.end(),it2!=mp_b.end();++it1,++it2)
{
if(it1->first!=it2->first || it1->second!=it2->second)
{
return 0;
}
}
return 1;
}
Nitin Saini • 2 years ago


bool isAnagram(string s, string t){

// Your code here
int size1 = s.size();
int size2 = t.size();

if(size1!=size2)
return false;

sort(s.begin(), s.end());
sort(t.begin(), t.end());

// for (int i = 0; i < size1; i++)
// {
// if (s[i] != t[i])
// return false;
// }

// return true;

int res = s.compare(t);
if(res==0)
return true;
else
return false;
}

pranjal pandey • 2 years ago

bool isAnagram(char a[], char b[]){

int chara[26]={0};
if(strlen(a)!=strlen(b))return false;
for(int i=0;i<strlen(a);i++){ chara[a[i]-'a']++;="" chara[b[i]-'a']--;="" }="" for(int="" i="0;i&lt;26;i++){" if(chara[i]!="0){" return="" false;="" break;="" }="" }="" return="" true;="" }="">

MAYUR.xxivk • 2 years ago

Correct answer.🎀
Total Time Taken:0.6/1.4


public static boolean isAnagram(String a,String b)
{
HashMap<Character , Integer> hs1 = new HashMap<>();
for(int i =0 ; i<a.length(); i++)
{
if(hs1.containsKey(a.charAt(i)))
hs1.put(a.charAt(i) , hs1.get(a.charAt(i))+1);
else
hs1.put(a.charAt(i),1);
}

HashMap<Character , Integer> hs2 = new HashMap<>();
for(int i =0 ; i<b.length(); i++)
{
if(hs2.containsKey(b.charAt(i)))
hs2.put(b.charAt(i) , hs2.get(b.charAt(i))+1);
else
hs2.put(b.charAt(i),1);
}

if(hs2.equals(hs1))
return true;

return false;


}

Ankit Podder • 2 years ago


Correct Answer.Correct Answer
Execution Time:0.01


bool isAnagram(char a[], char b[]){
int arr[26] = {0};
while(*a != '\0'){
arr[*a - 'a'] ++;
a++;
}
while(*b != '\0'){
arr[*b - 'a'] --;
b++;
}
for(int i = 0 ; i < 26 ; i++){
if(arr[i] != 0) return false;
}
return true;
}

sudarshan maskare • 2 years ago

https://uploads.disquscdn.c...
using 26 length of charcters simple

Arpita • 2 years ago

bool isAnagram(string a, string b){

// Your code here
sort(a.begin(),a.end());
sort(b.begin(),b.end());
if(a==b)
return true;
return false;

}

Vismitha Surendran • 2 years ago

can we make sure if all char in a and b are checked only by using if?

Rahul Gangwar • 2 years ago

// easy solutions in cpp
map<char,int>mp;
for(int i=0;i<a.size();i++){ mp[a[i]]++;="" }="" for(int="" i="0;i&lt;b.size();i++){" mp[b[i]]--;="" }="" for(auto="" it:mp){="" int="" val="it.second;" if(val!="0)return" false;="" }="" return="" true;="">

sketchomania • 2 years ago
Kartik Tyagi • 2 years ago

python sol:
Execution Time:0.02

def isAnagram(self,a,b):
if len(a) != len(b):
return 0
for i in range(0, len(a)):
if ((a[i] not in b) or (b[i] not in a)):
return 0
break
return 1

Nischay Srivastava • 2 years ago

bool isAnagram(string a, string b){

// Your code here
int f=0;
int has1[256]={0};
int has2[256]={0};
for(int i=0;i<a.length();i++) {="" has1[a[i]]++;="" }="" for(int="" i="0;i&lt;b.length();i++)" {="" has2[b[i]]++;="" }="" for(int="" i="0;i&lt;256;i++)" {="" if(has1[i]="=has2[i])" {="" f="1;" }="" else{="" f="0;" break;="" }="" }="" return="" f;="" }="">

Thoda_crazy_coder • 3 years ago

here is the best solution 0.04
bool isAnagram(string a, string b){

// Your code here
int arr[26]={0},arr1[26]={0};
char c;
int i=0;
while(a[i]!='\0'){
arr[a[i]%97]+=1;
i++;
}
i=0;
while(b[i]!='\0'){
arr1[b[i]%97]+=1;
i++;
}
int check=0;
for(int i=0;i<26;i++){
if(arr[i]!=arr1[i])
return false;
}
return true;
}
if you think its good give a thumbs-up ☝🏿☝🏿

https://github.com/varunswi... for all gfg solutions

bool isAnagram(string a, string b){
// Your code here
if(a.size() != b.size()){
return false;
}
sort(a.begin(), a.end());
sort(b.begin(), b.end());
for(int i=0; i<a.size(); i++){="" if(a[i]="" !="b[i]){" return="" false;="" }="" }="" return="" true;="" }="">

SAKET SRIVASTAVA • 3 years ago

Sorting Algorithm works in O(NLogN) and the questions ask for linear solution not O(NLogN)

Avinash Anand • 3 years ago
Md Hayatuddin • 3 years ago

nothing to worry
just sort

sort(a.begin(),a.end());
sort(b.begin(),b.end());
if (a==b)
return 1;
else 0;

Ankit Bajpai • 3 years ago

public static boolean isAnagram(String s1,String s2)
{

if (s1.length() != s2.length()) {
return false;
}

int[] count = new int[256];

for (int i = 0; i < s1.length(); i++) {
count[s1.charAt(i)]++;
count[s2.charAt(i)]--;
}

for (int i = 0; i < count.length; i++) {
if (count[i] != 0) {
return false;
}
}
return true;

}

Abhishek Shrivastav • 3 years ago
Saumya Yadav • 4 years ago


bool isAnagram(string c, string d){
int n=c.length();
int m=d.length();
int i,j;
int count[26]={0};
if(n!=m){
//cout<<"Not equal";
return false;
}
for(i=0;i<n;i++){ count[c[i]-'a']++;="" }="" for(i="0;i&lt;n;i++){" count[d[i]-'a']--;="" }="" for(i="0;i&lt;n;i++){" if(count[i]!="0){" cout<<"not="" zero";="" return="" false;}="" }="" return="" true;="" }="" <="" code="">

Samir Pattanaik • 4 years ago

bool isAnagram(string c, string d){

int n=c.length();
int m=d.length();
int a[26]={0};
int a1[26]={0};

if(n!=m)
return false;

for(int i=0;i<n;i++) {="" a[c[i]-'a']++;="" a1[d[i]-'a']++;="" }="" int="" j="0;" for(int="" i="0;i&lt;n;i++)" {="" if(a[i]!="a1[i])" {="" return="" false;="" }="" }="" return="" true;="" }="">

Gourav Nath • 2 years ago

🤧


bool isAnagram(string a, string b)
{
sort(a.begin() , a.end());
sort(b.begin() , b.end());
if(a == b)
return true;
else
return false;
}
Commando • 2 years ago


class Solution
{
public:
//Function is to check whether two strings are anagram of each other or not.
bool isAnagram(string a, string b){

// Your code here
if(a.length()!=b.length())
return 0;

int freq[26]={0};

for(auto x:a)
{
freq[x - 'a']++;
}

for(auto y:b)
{
freq[y-'a']--;
}

for(int i=0;i<26;i++)
{
if(freq[i]>0)
return 0;
}

return 1;


}

};

Ujjwal Tarway • 2 years ago

#PYTHON SOLN
def isAnagram(self,a,b):
#code here
if len(a) != len(b):
return False
else:
a = "".join(sorted(a))
b = "".join(sorted(b))
for i in range(len(a)):
if a[i] == b [i]:
continue
else:
return False
return True

Rajan Priyadarshi • 2 years ago
CodingBeast • 2 years ago

https://uploads.disquscdn.c...

Anagram using stack solution in JAVA
0.7 sec solution

Rishu Raj Anand • 2 years ago

if sorted(a)==sorted(b):
----return 1
else:
----return 0

groot09 • 2 years ago

Java Solution


public static boolean isAnagram(String a,String b)
{
char[] ArrayS1 = a.toCharArray();
char[] ArrayS2 = b.toCharArray();
Arrays.sort(ArrayS1);
Arrays.sort(ArrayS2);

if( Arrays.equals(ArrayS1, ArrayS2)){
return true;
}
// Your code here
else return false;
}

Bheema Ram • 2 years ago

bool isAnagram(string a, string b){

// Your code here
sort(a.begin(),a.end());
sort(b.begin(),b.end());
if(a==b) return true;
else return false;
}

Sudhanshu Gupta • 2 years ago

GeeksForGeeks

Your compiler is not working properly, It shows wrong result while I submitted my code at a testcase ( 'tsf' 'fts' ). Output showing by your compiler at submit time is NO and when I check this same testcase on "Test against custom input" section is it gave me YES

.bool isAnagram(string a, string b){

int countChar[26] = {0};

for(int i=0; i<26; i++){
countChar[a[i]-97]++;
countChar[b[i]-97]--;
}

for(int i=0; i<26; i++){
if(countChar[i] != 0) return false;
}
return true;
}

Rahul Sharma • 2 years ago

FINEST SOLUTION
// Your code here
sort(a.begin() , a.end());
sort(b.begin() , b.end());
if(a==b){
return true;
}
return false;