博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
LeetCode-Scramble String
阅读量:5127 次
发布时间:2019-06-13

本文共 1803 字,大约阅读时间需要 6 分钟。

哎,难题又不会做,

思路没有什么难度,

关键是要把问题思考透彻,

要考虑的要点还是挺多的,不容易一下子都考虑到;

我开始的思路是按照树的根去递归的,

这样就必须要没有重复元素,因为需要每次在s2中查找s1中的元素;

怎么说呢,有点考虑的过于specific了,其实直接把字符串分成两部分递归就可以了,

不过需要注意不能漏掉两部分可能次序调换的情况。

1 class Solution { 2 public: 3     bool isScramble(string s1, string s2) { 4         // Start typing your C/C++ solution below 5         // DO NOT write int main() function 6         if (s1.empty() && s2.empty()) { 7             return true; 8         } 9         if (s1 == s2) {10             return true;11         }12         return scramble(s1, 0, s1.size() - 1, s2, 0, s2.size() - 1);13     }14     bool scramble(string &s1, int b1, int e1, string &s2, int b2, int e2) {15         if (!same(s1, b1, e1, s2, b2, e2)) {16             return false;17         }18         int len = e1 - b1 + 1;19         if (len == 0) {20             return true;21         }22         if (len == 1) {23             return (s1[b1] == s2[b2]);24         }25         for (int i = 0; i < len - 1; ++i) {26             if ((scramble(s1, b1, b1 + i, s2, b2, b2 + i) && scramble(s1, b1 + i + 1, e1, s2, b2 + i + 1, e2)) || 27                 (scramble(s1, b1, b1 + i, s2, e2 - i, e2)) && scramble(s1, b1 + i + 1, e1, s2, b2, e2 - i - 1)) {28                 return true;29             }30         }31         return false;32     }33     bool same(string &s1, int b1, int e1, string &s2, int b2, int e2) {34         vector
count(256, 0);35 for (int i = b1; i <= e1; ++i) {36 ++count[s1[i]];37 }38 for (int i = b2; i <= e2; ++i) {39 --count[s2[i]];40 }41 for (int i = 0; i < 256; ++i) {42 if (count[i] != 0) {43 return false;44 }45 }46 return true;47 }48 };

 

转载于:https://www.cnblogs.com/chasuner/p/scramble.html

你可能感兴趣的文章
(tmp >> 8) & 0xff;
查看>>
linux命令之ifconfig详细解释
查看>>
NAT地址转换
查看>>
Nhibernate 过长的字符串报错 dehydration property
查看>>
Deque - leetcode 【双端队列】
查看>>
Linux 普通用户拿到root权限及使用szrz命令上传下载文件
查看>>
人物角色群体攻击判定(一)
查看>>
JavaWeb学习过程 之c3p0的使用
查看>>
MySql Delimiter
查看>>
一步步学习微软InfoPath2010和SP2010--第九章节--使用SharePoint用户配置文件Web service(2)--在事件注册表单上创建表单加载规则...
查看>>
使用客户端对象模型读取SharePoint列表数据
查看>>
POJ 1328 Radar Installation 贪心
查看>>
gulp插件gulp-ruby-sass和livereload插件
查看>>
免费的大数据学习资料,这一份就足够
查看>>
clientWidth、clientHeight、offsetWidth、offsetHeight以及scrollWidth、scrollHeight
查看>>
MySQL(一)
查看>>
企业级应用与互联网应用的区别
查看>>
Vue父子组件间的通信
查看>>
PHPCMS 模板的设置
查看>>
linux-2.6.38 input子系统(用输入子系统实现按键操作)
查看>>