題目給出乙個字串s1,我們可以用遞迴的方法將字串分成兩個非空的子串來將s1表示成乙個二叉樹
下面是s1=「great」的一種二叉樹的表現形式:
great↵ / ↵ gr eat↵ / / ↵g r e at↵ / ↵ a t將字串亂序的方法是:選擇任意的非葉子節點,交換它的兩個孩子節點。
例如:如果我們選擇節點「gr」交換他的兩個孩子節點,就會產生乙個亂序字串"rgeat"
思路:如果s1 s2互為亂序字串 那麼一定是其中一部分相等,另外一部分互相交換
採取遞迴思路,轉化為子問題
bool isscramble(string s1, string s2) ;
for(int i=0;ifor(int i=0;i<26;i++)
if(count[i]!=0)
return false; //如果字元組成不同那麼返回false
//若互為亂序字串 那麼一定是其中一部分子串對應相等 一部分子串對應相反
for(int i=1;ireturn false;
}
亂序字串
給出乙個字串陣列s,找到其中所有的亂序字串 anagram 如果乙個字串是亂序字串,那麼他存在乙個字母集合相同,但順序不同的字串也在s中。所有的字串都只包含小寫字母 對於字串陣列 lint intl inlt code 返回 lint inlt intl 思路 認為每一組亂序字串都有唯一的相同的 h...
亂序字串
給出乙個字串陣列s,找到其中所有的亂序字串 anagram 如果乙個字串是亂序字串,那麼他存在乙個字母集合相同,但順序不同的字串也在s中。所有的字串都只包含小寫字母 樣例1 輸入 lint intl inlt code 輸出 lint inlt intl 樣例 2 輸入 ab ba cd dc e ...
亂序字串演算法
蠻力法 思路等會睡醒之後寫吧 include string include algorithm include stdio.h include iostream include vector using namespace std bool isanagram string source,strin...