首页 > 其他 > 详细

LeetCode | Scramble String

时间:2014-04-15 09:28:02      阅读:474      评论:0      收藏:0      [点我收藏+]
bubuko.com,布布扣
 1 class Solution {
 2 public:
 3     bool anagram(string s1, string s2){
 4         if(s1.size() != s2.size()) return false;
 5         sort(s1.begin(), s1.end());
 6         sort(s2.begin(), s2.end());
 7         return s1 == s2;
 8     }
 9     bool isScramble(string s1, string s2) {
10         if (s1.empty() && s2.empty()) return true;
11         if (s1.length() != s2.length()) return false;
12         if (s1 == s2) return true;
13         if (!anagram(s1, s2)) return false;
14         bool ret = false;
15         int n = s1.length();
16         
17         for (int i = 1; i < n; i++) {
18             ret = isScramble(s1.substr(0, i), s2.substr(n - i, i)) && isScramble(s1.substr(i, n - i), s2.substr(0, n - i));
19             if (ret) return true;
20             ret = isScramble(s1.substr(0, i), s2.substr(0, i)) && isScramble(s1.substr(i, n - i), s2.substr(i, n - i));
21             if (ret) return true;
22         }
23         return ret;
24     }
25 };
bubuko.com,布布扣

递归的算法一开始TLE,知道要试着剪枝,看了discussion之后发现可以加了anagram检测之后就AC了。。。

动态规划的算法想不出来。其实关键是把重复的子问题找出来。下午真是脑子生锈了。。。google了一下发现其实也挺简单的。。。算了,下次再做。

LeetCode | Scramble String,布布扣,bubuko.com

LeetCode | Scramble String

原文:http://www.cnblogs.com/linyx/p/3664332.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!