***Leetcode 87. Scramble String
2017-12-20 16:35
453 查看
参考后, 没做出来
class Solution { public: bool isScramble(string s1, string s2) { vector<int> v(127); size_t n = s1.size(); if (n == 1) return s1[0] == s2[0]; for (size_t i = 0; i != n; ++i) { ++v[s1[i]]; --v[s2[i]]; } for (size_t i = 0; i != n; ++i) { if (v[s1[i]] != 0) return false; } for (size_t i = 1; i != n; ++i) { if (isScramble(s1.substr(0, i), s2.substr(0, i)) && isScramble(s1.substr(i, n - i), s2.substr(i, n - i))) return true; if (isScramble(s1.substr(0, i), s2.substr(n - i, i)) && isScramble(s1.substr(i, n - i), s2.substr(0, n - i))) return true; } return false; } };
class Solution { public: bool isScramble(string s1, string s2) { size_t n = s1.size(); if (n != s2.size()) return false; vector<vector<vector<int> > > flag(n, vector<vector<int> >(n, vector<int>(n + 1))); for (size_t i = 0; i != n; ++i) { for (size_t j = 0; j != n; ++j) { if (s1[i] == s2[j]) flag[i][j][1] = 1; } } for (size_t len = 2; len <= n; ++len) { for (size_t i = 0; i != n; ++i){ for (size_t j = 0; j != n; ++j) { if (max(j, i) + len <= n) { for (size_t k = 1; k != len; ++k) { flag[i][j][len] = flag[i][j][len] || (flag[i][j + len - k][k] && flag[i + k][j][len - k]); flag[i][j][len] = flag[i][j][len] || (flag[i][j][k] && flag[i + k][j + k][len - k]); } } } } } return flag[0][0] ; } };
相关文章推荐
- 【一天一道LeetCode】#87. Scramble String
- LeetCode 87. Scramble String(字符串扰乱)
- LeetCode 87 Scramble String
- 【LeetCode】87. Scramble String
- 【一天一道LeetCode】#87. Scramble String
- 【LeetCode】87. Scramble String
- leetcode 87 Scramble String(递归+剪枝)
- LeetCode 87 Scramble String (Python详解及实现)
- Leetcode87. Scramble String
- leetCode 87.Scramble String (拼凑字符串) 解题思路和方法
- 【leetcode】String——Scramble String(87)
- Leetcode 87. Scramble String
- LeetCode87——Scramble String
- leetcode[87]Scramble String
- leetcode - 87.Scramble String
- LeetCode 87 Scramble String
- LeetCode87 Scramble String
- LeetCode 87.Scramble String
- 【LeetCode】87. Scramble String
- Leetcode 87. Scramble String