lintcode 連線字串

2021-09-20 10:01:17 字數 1025 閱讀 4212

給定乙個字串列表,您可以將這些字串連線到乙個迴圈中,在這個迴圈中,您可以選擇將其反轉。在所有可能的迴圈中,您需要在刪除迴圈之後找到字母順序最大的字串,這將使迴圈字串成為乙個普通的字串。

具體來說,要找到字母順序上最大的字串,您需要經歷兩個階段:

1:將所有字串連線到乙個迴圈中,在這個迴圈中,您可以反轉某些字串,並按照給定的順序將它們連線起來。

2:在迴圈的任意位置切割並製造乙個斷點,這將使從字元處開始迴圈的字串成為乙個正常的字串,你的任務是在所有可能的規則字串中找到字母順序上最大的乙個。

給定 str = [「abc」, 「xyz」], 返回 「zyxcba」

解釋:你可以得到迴圈字串「-abcxyz-」,「-abczyx-」,「-cbaxyz-」,「-cbazyx-」,

其中「-」表示迴圈狀態。

答案字串串從第四個字串中得來,

你可以從中間的字母a中剪下,得到「zyxcba」。

最終要找到的是乙個最大的字串,所以最後的每個除了被切割的字串在內部必然是遞減的。這樣第一步就可以明確了,按照自身遞減的順序把所有的字串連線起來。下一步要明確的就是要切割哪個字串的哪個字元,要不要翻轉。只需要乙個遍歷即可。

123

4567

891011

1213

1415

1617

1819

2021

2223

2425

2627

2829

30

class solution 

string res = s;

int n = s.length(), sum = 0;

for (int i = 0; i < strs.size(); i++)

sum += strs[i].length();

}return res;}};

-------------end of file

thanks for reading-------------

LintCode 翻轉字串

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

字串置換 LintCode

給定兩個字串,請設計乙個方法來判定其中乙個字串是否為另乙個字串的置換。置換的意思是,通過改變順序可以使得兩個字串相等 樣例 abc 為 cba 的置換。aabc 不是 abcc 的置換。ifndef c211 h define c211 h include include include using...

攀爬字串 LintCode

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