示例#1
0
文件: 1-4.c 项目: kgraves/ctci
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;
}
示例#2
0
文件: main.c 项目: ko/inpro
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);
}
示例#3
0
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);
}
示例#4
0
文件: anagram.cpp 项目: AnisB/Misc
int main()
{
	char buf1[] = "bouffe";
	char buf2[] = "ffoube";
	std::cout<<isAnagram(buf1, buf2, sizeof(buf1))<<std::endl;
	return 0;
}
示例#5
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;
	}
示例#6
0
int main(int argc, char *argv[]) {
    char s[100] = "anagram";
    char t[100] = "nagaram";

    assert(isAnagram(s, t) == 1);
    return 0;
}
示例#7
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;
}
示例#8
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;
 }
示例#9
0
 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;
 }
示例#10
0
 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;
 }
示例#11
0
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;
}
示例#12
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;
 }
示例#13
0
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;
}
示例#14
0
文件: s3.cpp 项目: lzl124631x/code
 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;
 }
示例#16
0
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;
}
示例#19
0
文件: test.cpp 项目: njir/codeforces
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"));
}
示例#20
0
文件: test.cpp 项目: njir/codeforces
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"));
}
示例#21
0
int main() {
  printf("result=%d\n", isAnagram("rat", "car"));
  return 0;
}
示例#22
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);
}
示例#23
0
void ArrayQuiz::test242() {
    cout << "LeetCode 242 Valid Anagram 36.6% Easy" << endl;
    auto s("a");
    auto t("a");
    cout << isAnagram(s, t) << endl;
}
示例#24
0
int main()
{
	std::cout << "isAnagram test:" << std::endl;
	std::cout << isAnagram("test", "tset") << std::endl;
	std::cout << isAnagram("test", "ttst") << std::endl;
}