第十五周
来源:互联网 发布:java 递归 编辑:程序博客网 时间:2024/04/26 11:41
87. Scramble String
Given a string s1, we may represent it as a binary tree by partitioning it to two non-empty substrings recursively.
Below is one possible representation of s1 = “great”:
great / \ gr eat / \ / \ g r e at / \ a t
To scramble the string, we may choose any non-leaf node and swap its two children.
For example, if we choose the node “gr” and swap its two children, it produces a scrambled string “rgeat”.
rgeat / \ rg eat / \ / \r g e at / \ a t
We say that “rgeat” is a scrambled string of “great”.
Similarly, if we continue to swap the children of nodes “eat” and “at”, it produces a scrambled string “rgtae”.
rgtae / \ rg tae / \ / \r g ta e / \ t a
判断两个字符串是否是Scramble String,及是否是打乱的同一字符串。条件为1.长度相等。2.含有相同的字符,且数量相同。
可以使用递归处理,不断将字符串分割为相同长度的两半再判断是否满足Scramble String,注意:属于头尾不同的两部分如果满足ScrambleString条件的话也可以判定原字符串满足Scramble String。
bool isScramble(string s1, string s2) { if(s1==s2) return true; if(s1.size()!=s2.size()) return false; int count[26]={0}; for(int i=0;i<s1.size();i++) { count[s1[i]-'a']++; count[s2[i]-'a']--; } for(int i = 0; i < 26; i ++) { if(count[i] != 0) return false; } for(int i = 1; i < s1.size(); i ++) { if( (isScramble(s1.substr(0, i), s2.substr(0, i)) && isScramble(s1.substr(i), s2.substr(i))) || (isScramble(s1.substr(0, i), s2.substr(s1.size()-i)) && isScramble(s1.substr(i), s2.substr(0, s1.size()-i))) ) return true; } return false; }
- 第十五周
- 第十五周
- 第十五周
- 第十五周
- 第十五周总结
- 第十五周 第一天
- 第十五周作业 1.0
- 第十五周作业1
- 第十五周作业3
- 第十五周 任务一
- 第十五周 任务二
- 第十五周 任务三
- 第十五周作业2
- 第十五周作业3.1
- 第十五周作业3.2
- 第十五周 任务一
- 第十五周任务3
- 第十五周任务三
- “图解基础设施设计模式”小结
- 数据库写法小错误
- 关于int整数转换存储到字符数组
- 在centOS7下部署tpshop
- java通过JDBC连接MySQL数据库实现 增删查(预编译方式)
- 第十五周
- java学习入门知识点汇总1
- springMVC输出对象转JSON
- 一路走来之“华为网络技术大赛”
- Python 基础 while循环
- 文件上传与下载(FileUpload组件)
- [LeetCode]605. Can Place Flowers
- 100%正确的编码风格指导
- “师创杯”山东理工大学第九届ACM程序设计竞赛 热身赛 E.上色的纱雾【二分+贪心】