leetcode.87. Scramble String
2016-05-25 14:49
134 查看
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 =
To scramble the string, we may choose any non-leaf node and swap its two children.
For example, if we choose the node
We say that
Similarly, if we continue to swap the children of nodes
We say that
Given two strings s1 and s2 of the same length, determine if
s2 is a scrambled string of s1.
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
We say that
"rgtae"is a scrambled string of
"great".
Given two strings s1 and s2 of the same length, determine if
s2 is a scrambled string of s1.
class Solution { public: bool isScramble(string s1, string s2) { if(s1 == s2) return true; if(s1.size() != s2.size()) return false; vector<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; } };
相关文章推荐
- Log4j-日志
- 25岁的忧伤
- 最完整的垃圾回收原理
- ANT应用(三)ANT实战
- 阿里技术保障-KeepAlive
- iOS应用内支付(IAP)的那些坑
- OpenGL深入探索——OpenGL/GLSL数据传递小记(3.x) 【包含UBO详解】
- Java并发编程实战第四章对象的组合
- 代码混淆
- iOS 宏HUGE_VALL,HUGE_VAL,HUGE_VALF的含义
- 64位Ubuntu系统如何运行32位软件
- mvn 非法字符 65279
- Qt监测系统文件变化QFileSystemWatcher
- 排序算法
- 实例讲解Android中SQLiteDatabase使用方法
- java.lang.OutOfMemoryError处理错误
- swift基础笔记6-方法&下标脚本
- C primer plus 第八章 练习7:
- iOS 应用支持 IPv6,就那点事儿
- 数扰结构-visualization