int main() { // tests char str1[] = "This is a test string"; char str2[] = "string test a is This"; char str3[] = "Not an anagram"; assert(isAnagram(str1, str2) == 1); assert(isAnagram(str1, str3) == 0); return 0; }
int main(void) { char * s1 = "hello"; char * s2 = "holle"; char * s3 = "holl"; char * s4 = "ad"; char * s5 = "bc"; isAnagram(s1, s2); isAnagram(s2, s3); isAnagram(s4, s5); }
void test(char* s, char* t) { printf("s = %s, t = %s : ", s, t); if (isAnagram(s, t)) printf("t(%s) is an anagram of s(%s).\n", s, t); else printf("t(%s) is not an anagram of s(%s).\n", s, t); }
int main() { char buf1[] = "bouffe"; char buf2[] = "ffoube"; std::cout<<isAnagram(buf1, buf2, sizeof(buf1))<<std::endl; return 0; }
bool scrambleHelper(string a, string b, unordered_map<string, string>& tmap, unordered_map<string, string>& fmap) { if( ! isAnagram(a, b) ) { fmap[a] = b; return false; } if(a == b) { tmap[a] = b; return true; } int n = a.size(); for(int i = 1; i < n; i++) { string a0 = a.substr(0, i), a1 = a.substr(i, n - i), b0 = b.substr(0, i), b1 = b.substr(i, n - i); if( tmap[a0] == b0 && tmap[a1] == b1 ) return true; if( (fmap[a0] != b0 && fmap[a1] != b1) && ( scrambleHelper(a0, b0, tmap, fmap) && scrambleHelper(a1, b1, tmap, fmap) ) ) return true; a0 = a.substr(0, i), a1 = a.substr(i, n - i), b0 = b.substr(0, n - i), b1 = b.substr(n - i, i); if( tmap[a0] == b1 && tmap[a1] == b0 ) return true; if( (fmap[a0] != b1 && fmap[a1] != b0) && ( scrambleHelper(a0, b1, tmap, fmap) && scrambleHelper(a1, b0, tmap, fmap) ) ) return true; } return false; }
int main(int argc, char *argv[]) { char s[100] = "anagram"; char t[100] = "nagaram"; assert(isAnagram(s, t) == 1); return 0; }
int main() { char s1[MAX],s2[MAX]; printf("Enter the 1st string: "); scanf("%s",s1); printf("Enter the 2nd string: "); scanf("%s",s2); isAnagram(s1,s2)==1?printf("The two string are anagram.\n"):printf("The strings are not anangram.\n"); return 0; }
bool isScramble(string s1, string s2) { if (!isAnagram(s1, s2)) return false; auto problem = make_pair(s1, s2); if (s1 == s2) return true; for (int i = 1; i < s1.size(); i++){ if (isScramble(s1.substr(0, i), s2.substr(s2.size() - i)) && isScramble(s1.substr(i), s2.substr(0, s2.size() - i))) return true; if (isScramble(s1.substr(0, i), s2.substr(0, i)) && isScramble(s1.substr(i), s2.substr(i))) return true; } return false; }
vector<string> anagrams(vector<string> &strs) { vector<string> rst; sort(strs.begin(), strs.end(), cmp); int cnt = 1; for(int i=1; i<strs.size(); ++i) { if(isAnagram(strs[i], strs[i-1])) cnt++; else if(cnt > 1) { rst.insert(rst.end(), &strs[i - cnt], &strs[i]); cnt = 1; } } if(cnt > 1) rst.insert(rst.end(), &strs[strs.size() - cnt], &strs[strs.size()]); return rst; }
bool isScramble(string s1, string s2) { if (!isAnagram(s1, s2)) return false; auto key = make_pair(s1, s2); if (Cache.count(key)) return Cache[key]; auto &res = Cache[key]; if (s1 == s2) return true; for (int i = 1; i < s1.size(); i++){ if (isScramble(s1.substr(0, i), s2.substr(s2.size() - i)) && isScramble(s1.substr(i), s2.substr(0, s2.size() - i))) return res = true; if (isScramble(s1.substr(0, i), s2.substr(0, i)) && isScramble(s1.substr(i), s2.substr(i))) return res = true; } return res = false; }
int main(int argc, char** argv) { if(argc <=2) { std::cout << "please supply 2 strings" << std::endl; return 0; } if( isAnagram(argv[1], argv[2]) ) std::cout << "YES they are anagrams" << std::endl; else std::cout << "no they are not anagrams" << std::endl; return 0; }
bool isScramble(string s1, string s2) { // Start typing your C/C++ solution below // DO NOT write int main() function if(s1.size() != s2.size()) return false; if(s1.size() == 0) return true; if(s1.size() == 1) return s1 == s2; int len = 1; int n = s1.size(); for(; len < s1.size(); ++len) { if(isAnagram(s1.substr(0, len), s2.substr(0, len))) { if(isScramble(s1.substr(0, len), s2.substr(0, len)) && isScramble(s1.substr(len, n - len), s2.substr(len, n - len))) return true; else break; } } for(len = 1; len < s1.size(); ++len) { if(isAnagram(s1.substr(0, len), s2.substr(n - len, len))) { if(isScramble(s1.substr(0, len), s2.substr(n - len, len)) && isScramble(s1.substr(len, n - len), s2.substr(0, n - len))) return true; else break; } } return false; }
int main(int argc, char **argv) { char a[MAX_LENGTH], b[MAX_LENGTH]; printf("\n Enter a string :: "); scanf("%s", a); printf("\n Enter another string :: "); scanf("%s", b); if (isAnagram(a, b)) { printf("'%s' and '%s' are anagrams", a, b); } else { printf("'%s' and '%s' are not anagrams", a, b); } return 0; }
bool isScramble(int sa, int ea, int sb, int eb) { int M = ea - sa, N = eb - sb; if (M != N) return false; int key = getHash(sa, ea, sb, eb); if (m.find(key) != m.end()) return m[key]; bool ans = false; if (!A.compare(sa, ea - sa, B, sb, eb - sb)) ans = true; else if (!isAnagram(sa, ea, sb, eb)) ans = false; else { for (int len = 1; len < M; ++len) { if ((isScramble(sa, sa + len, sb, sb + len) && isScramble(sa + len, ea, sb + len, eb)) || (isScramble(sa, sa + len, eb - len, eb) && isScramble(sa + len, ea, sb, eb - len))) { ans = true; break; } } } return m[key] = ans; }
vector<vector<string>> groupAnagrams(vector<string>& strs) { vector<vector<string>> res; vector<string> ana; vector<int> pos; if(strs.empty()) return {}; for(int i = 0 ; i < strs.size(); i++) { ana.push_back(strs[i]); for(int j = i+1; j < strs.size(); j++) { if(isAnagram(strs[i], strs[j])) { ana.push_back(strs[j]); pos.push_back(j); } } res.push_back(ana); for(int k = 0; k < pos.size(); k++) strs[pos[k]] = ' '; ana.clear(); } return res; }
int main() { int t,n,i; char a[80002],b[40001],c[80002],temp[40001]; scanf("%d",&t); while(t--) { scanf(" %s %s",a,b); strcat(a,b); scanf("%d",&n); scanf(" %s",c); for(i=0;i<n-1;i++) { scanf(" %s",temp); strcat(c,temp); } if(isAnagram(a,c)) printf("YES\n"); else printf("NO\n"); } return 0; }
int main() { char str[101]; int t,count,len,i,j,k,l; scanf("%d",&t); while(t--) { scanf(" %s",str); len=strlen(str); count=0; for(i=0;i<len;i++) for(j=i;j<len;j++) for(k=i;k<len;k++) for(l=k;l<len ;l++) if(i!=k && j!=l && l-k+1==j-i+1 && isAnagram(str,i,j,k,l)) { count++; printf("%d %d %d %d\n",i,j,k,l); } printf("%d\n",count); } return 0; }
int main() { char s[10] = "anagram"; char t[10] = "maaargn"; printf("is anagram: %d\n", isAnagram(s, t)); return 0; }
TEST(AnagramTest, FalseCase) { ASSERT_EQ(false, isAnagram("abcdefg", "bacfed")); ASSERT_EQ(false, isAnagram("aaabbb", "aaabab")); ASSERT_EQ(false, isAnagram2("abcdefg", "bacfed")); ASSERT_EQ(false, isAnagram2("aaabbb", "aaabab")); }
TEST(AnagramTest, TrueCase) { ASSERT_EQ(true, isAnagram("abcdef", "bacfed")); ASSERT_EQ(true, isAnagram("aaabbb", "ababab")); ASSERT_EQ(true, isAnagram2("abcdef", "bacfed")); ASSERT_EQ(true, isAnagram2("aaabbb", "ababab")); }
int main() { printf("result=%d\n", isAnagram("rat", "car")); return 0; }
#include "Catch/single_include/catch.hpp" #include "ValidAnagram.hpp" TEST_CASE("ValidAnagram") { REQUIRE(isAnagram(std::string("anagram"), std::string("nagaram")) == true); REQUIRE(isAnagram(std::string("rat"), std::string("cat")) == false); }
void ArrayQuiz::test242() { cout << "LeetCode 242 Valid Anagram 36.6% Easy" << endl; auto s("a"); auto t("a"); cout << isAnagram(s, t) << endl; }
int main() { std::cout << "isAnagram test:" << std::endl; std::cout << isAnagram("test", "tset") << std::endl; std::cout << isAnagram("test", "ttst") << std::endl; }