leetcode - Scramble String
2013-12-06 11:13
351 查看
class Solution { public: bool isScramble(string &s1, string &s2, int start1, int end1, int start2, int end2){ if (end1-start1 != end2-start2) return false; if (end1-start1 < 0) return true; int len = end1-start1+1; if (len==1){ if (s1.at(start1) == s2.at(start2)) return true; return false; } int *f = new int [128]; int *g = new int [128]; for (int i=0; i<128; i++){ f[i] = 0; g[i] = 0; } int * flag = new int[len]; int tDifs = 0; int rDifs = 0; for (int i=0; i<len; i++){ int p = (int)s1.at(i+start1); f[p]++; if (f[p]==1) tDifs++; else if (f[p]==0) tDifs--; int q = (int)s2.at(i+start2); f[q]--; if (f[q]==-1) tDifs++; else if (f[q]==0) tDifs--; int r = (int)s2.at(end2-i); g[p]++; if (g[p]==1) rDifs++; else if (g[p]==0) rDifs--; g[r]--; if (g[r]==-1) rDifs++; else if (g[r]==0) rDifs--; flag[i] = 0; if (tDifs==0) flag[i]+=1; else if (rDifs==0) flag[i]+=2; } int rlt = 0; if (tDifs!=0) rlt = -1; for (int i=0; i<len-1 && rlt==0; i++){ if (flag[i]%2==1 && isScramble(s1,s2,start1, start1+i, start2,start2+i) && isScramble(s1,s2,start1+i+1,end1,start2+i+1, end2)){ rlt =1; break; } if (flag[i]/2==1 && isScramble(s1,s2,start1, start1+i, end2-i,end2) && isScramble(s1,s2,start1+i+1,end1,start2, end2-i-1)){ rlt =1; break; } } delete []f; delete[]g; delete[]flag; if (rlt==1) return true; return false; } bool isScramble(string s1, string s2) { // IMPORTANT: Please reset any member data you declared, as // the same Solution instance will be reused for each test case. return isScramble(s1,s2,0,s1.length()-1, 0, s2.length()-1); } };
相关文章推荐
- LeetCode 87. Scramble String
- LeetCode--Scramble String 爬行字符串
- [LeetCode]87. Scramble String
- Leetcode: Scramble String
- LeetCode-Scramble String
- [leetcode]Scramble String
- leetcode[86] Scramble String
- [LeetCode] Scramble String -- 三维动态规划的范例
- Leetcode: Scramble String
- Scramble String -- leetcode
- [LeetCode] Scramble String 字符串 dp
- Scramble String LeetCode JAVA
- 102_leetcode_Scramble String
- LeetCode Scramble String
- [LeetCode] Scramble String
- 【一天一道LeetCode】#87. Scramble String
- LeetCode:Scramble String
- [LeetCode] Scramble String
- LeetCode Scramble String
- leetcode之Scramble String