scramble-string
来源:互联网 发布:死亡笔记 知乎 编辑:程序博客网 时间:2024/06/16 19:44
题目描述:
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 tTo 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 tWe 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 aWe 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.
递归AC代码:
class Solution {public: bool isScramble(string s1, string s2) { int len1=s1.size(); int len2=s2.size(); if (s1 == s2) return true; string s3=s1,s4=s2; sort(s3.begin(),s3.end()); sort(s4.begin(),s4.end()); if(len1 != len2||s3!=s4) return false; for (int i = 1; i < len1; ++i){ if (isScramble(s1.substr(0, i), s2.substr(0, i))&& isScramble(s1.substr(i), s2.substr(i))) return true; if (isScramble(s1.substr(0, i), s2.substr(len2 - i))&& isScramble(s1.substr(i), s2.substr(0, len2 - i))) return true; } return false; }};
动态规划AC代码:
class Solution {public: bool isScramble(string s1, string s2) { const int N = s1.size(); if (N != s2.size()) return false; // f[n][i][j],表示长度为n,起点为s1[i]和 // 起点为s2[j]两个字符串是否互为scramble bool f[N + 1][N][N]; fill_n(&f[0][0][0], (N + 1) * N * N, false); for (int i = 0; i < N; i++) for (int j = 0; j < N; j++) f[1][i][j] = s1[i] == s2[j]; for (int n = 1; n <= N; ++n) { for (int i = 0; i + n <= N; ++i) { for (int j = 0; j + n <= N; ++j) { for (int k = 1; k < n; ++k) { if ((f[k][i][j] && f[n - k][i + k][j + k]) || (f[k][i][j + n - k] && f[n - k][i + k][j])) { f[n][i][j] = true; break; } } } } } return f[N][0][0]; }};
0 0
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- Scramble String
- scramble string
- Scramble String
- Scramble String
- ubuntu安装python集成环境Anaconda,并搭建tensorflow学习框架
- JNI官方文档翻译1-开篇
- iOS开发示例————短信验证码倒计时
- jQuery操作select下拉框的text值和value值的方法
- [bzoj1603]: [Usaco2008 Oct]打谷机 搜索
- scramble-string
- SHA256兼容性
- Web Service学习与初步认识
- theano学习指南3(翻译)-多层感知器模型
- 我喜欢微服务,函数式编程的原因
- 戴尔PowerEdge R730 机架式服务器安装 Ubuntu 14.04.3 LTS
- 6.Redis持久化--主从同步
- 怎么在fireFox里增加插件(CyberArticle)
- WDF USB