leetcode第一刷_Scramble String
阿新 • • 發佈:2017-06-18
false rac leet 是把 相等 得到 能夠 新的 eas
字符串的好題。
題幹解釋的很復雜。一下讓人不知所措了。
這道題究竟是什麽意思呢?終於的結果是把一個字符串中字母的順序打亂了,讓你推斷一個字符串能不能由還有一個字符串打亂得到。那打亂這個過程是怎麽做的呢,非常easy。給你一個字符串,你必須先找一個點把它砍成兩半,你能夠通過交換這兩半的順序來打亂源字符串的順序,也就是在兩半中的字符與還有一半中全部字符的相對順序是統一的。對於每一半。都能夠反復上面的過程。
那想一下,怎麽知道打斷的那個點在哪呢?窮舉。怎麽知道打斷之後有沒有做交換操作呢?兩種情況遞歸。有一條走的通就能夠了。還有個問題。兩個字符串中包括的字符一定是全然一樣的,如何確定這一點呢?最暴力的方式。新開兩個字符串,排序,推斷這兩個新的相不相等。
class Solution { public: bool isScramble(string s1, string s2) { if(s1 == "" && s2 == "") return true; if(s1.length() != s2.length()) return false; if(s1 == s2) return true; string s11(s1), s22(s2); sort(s11.begin(), s11.end()); sort(s22.begin(), s22.end()); if(s11 != s22) return false; for(int i=1;i<s1.length();i++){ if(isScramble(s1.substr(0, i), s2.substr(0, i))&&isScramble(s1.substr(i, s1.length()-i), s2.substr(i, s2.length()-i))) return true; else if(isScramble(s1.substr(0, i), s2.substr(s2.length()-i, i))&&isScramble(s1.substr(i, s1.length()-i), s2.substr(0, s2.length()-i))) return true; } return false; } };
leetcode第一刷_Scramble String