D. Equivalent Strings

                    D. Equivalent Strings

 1 #include <iostream>
 2 #include <cstdio>
 3 #include <cstring>
 4 #include <cmath>
 5 #include <algorithm>
 6 #include <string>
 7 #include <vector>
 8 #include <set>
 9 #include <map>
10 #include <queue>
11 #include <sstream>
12 using namespace std;
13 typedef __int64 LL;
14 const int INF = 0x4ffffff;
15 const double EXP = 1E-5;
16 const LL mod = 1e9+7;
17 const int MS= 200005;
18 
19 
20 bool equals(string s1,string s2)
21 {
22       int len1 = s1.size();
23       int len2 = s2.size();
24       if(s1 == s2)
25             return true;
26      else if(len1 != len2 || (len1&1) ==1 || (len2 &1) ==1)
27            return false;
28       else
29       {
30        //     if(equals(s1.substr(0,len1/2),s2.substr(0,len1/2)) && equals(s1.substr(len1/2,len1/2),s2.substr(len1/2,len1/2)))
31         //          return true;       //  不把这个放后面会超时,因为前面的s1 == s2没有通过。说明相同位置上有字符不同。先交叉比较能够优化。
32 
33              if(equals(s1.substr(0,len1/2),s2.substr(len1/2,len1/2)) && equals(s1.substr(len1/2,len1/2),s2.substr(0,len1/2)))
34                   return true;
35             if(equals(s1.substr(0,len1/2),s2.substr(0,len1/2)) && equals(s1.substr(len1/2,len1/2),s2.substr(len1/2,len1/2)))
36                  return true;
37 
38              return false;
39       }
40 }
41 
42 
43 int main()
44 {
45       string s1,s2;
46       cin>>s1>>s2;
47       if(equals(s1,s2))
48             printf("YES\n");
49       else
50             printf("NO\n");
51       return 0;
52 }

 

转载于:https://www.cnblogs.com/hutaishi/p/4671817.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值