攀爬字串 LintCode

2021-08-09 09:59:15 字數 1114 閱讀 9476

給定乙個字串 s1,將其遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。

下面是s1 = 「great」的乙個可能表達:

在攀爬字串的過程中,我們可以選擇其中任意乙個非葉節點,然後交換該節點的兩個兒子。

例如,我們選擇了 「gr」 節點,並將該節點的兩個兒子進行交換,從而產生了攀爬字串 「rgeat」。

我們認為, 「rgeat」 是 「great」 的乙個攀爬字串.

類似地,如果我們繼續將其節點 「eat」 和 「at」 進行交換,就會產生新的攀爬字串 「rgtae」。

同樣地,」rgtae」 也是 「great」的乙個攀爬字串。

給定兩個相同長度的字串s1 和 s2,判定 s2 是否為 s1 的攀爬字串。

樣例:

挑戰 : o(n

3 ) time

思路:

利用遞迴,將兩個字串拆分,在當前長度小於等於2時進行比較。

滿足下面條件中的乙個就s2就是s1的攀爬字串

i)若s2與s1的分割狀態相同,且分割子串仍是攀爬字串;

(s1:g reat s2:g reat)

ii)若s2與s1的分割狀態相反,且分割子串仍是攀爬字串。

(s1:g reat s2:atre g)

#ifndef c430_h

#define c430_h

#include

#include

#include

using namespace std;

class solution

for (int i = 1; i < len; ++i)

}return

false;

}};#endif

攀爬字串

給定乙個字串s1,將其遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。下面是s1 great 的乙個可能表達 great gr eat g r e at a t在攀爬字串的過程中,我們可以選擇其中任意乙個非葉節點,然後交換該節點的兩個兒子。例如,我們選擇了 gr 節點,並將該節點的兩個兒子進行交換...

程式設計題 攀爬字串

給定乙個字串s1,將其遞迴地分割成兩個非空子字串,從而將其表示為二叉樹。下面是s1 great 的乙個可能表達 great gr eat g r e at a t在攀爬字串的過程中,我們可以選擇其中任意乙個非葉節點,然後交換該節點的兩個兒子。例如,我們選擇了 gr 節點,並將該節點的兩個兒子進行交換...

LintCode 翻轉字串

翻轉字串 給定乙個字串,逐個翻轉字串中的每個單詞。樣例 給出s the sky is blue 返回 blue is sky the 說明 單詞的構成 無空格字母構成乙個單詞 輸入字串是否包括前導或者尾隨空格?可以包括,但是反轉後的字元不能包括 如何處理兩個單詞間的多個空格?在反轉字串中間空格減少到...