首页 > 学院 > 开发设计 > 正文

87. Scramble String

2019-11-11 05:11:44
字体:
来源:转载
供稿:网友

一开始以为很难, 其实就是递归判断,只要第一次做错的原因是我以为分割点是中间,其实是每一个点都可以是分割点,想想2叉树就想懂的。 2刷应该就用dp吧, 这个也在手动刷一次!理解多一次

class Solution {public: bool isScramble(string s1, string s2) { if(s1 == s2) return true; if(s1.length() == 0) return true; if(s1.length() != s2.length()) return false; int mark[26]; int n = s1.length(); memset(mark, 0, sizeof(mark)); for(int i = 0; i < n; ++ i){ mark[s1[i] - 'a']++; mark[s2[i] - 'a']--; } for(int i = 0; i < 26; ++ i) if(mark[i] != 0) return false; for(int i = 1; i < n; ++ 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; }};
发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表