詳解反轉字串演算法題

2021-10-05 17:03:07 字數 1202 閱讀 9389

反轉字串,是經常出現的一種演算法題,使用c/c++語言時,通常要求在原地進行反轉。

最直接的反轉整個字串,使用的是一前一後雙指標的方法

高階的翻轉,同要要涉及到兩個指標,只是兩個指標就行區域性反轉

高階題目:

給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。

示例:輸入: s = "abcdefg", k = 2

輸出: "bacdfeg"

要求:該字串只包含小寫的英文本母。

給定字串的長度和 k 在[1, 10000]範圍內。

class solution 

return s;

}};

兩個指標移動的區域性反轉 

給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。

示例 1:

輸入: "let's take leetcode contest"

輸出: "s'tel ekat edocteel tsetnoc" 

class solution {

public:

string reversewords(string s) {

int i=0,j=0;

while(i最難的反轉字串

給定乙個字串,逐個翻轉字串中的每個單詞。

示例 1:

輸入: "the sky is blue"

輸出: "blue is sky the"

示例 2:

輸入: "  hello world!  "

輸出: "world! hello"

解釋: 輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。

示例 3:

輸入: "a good   example"

輸出: "example good a"

解釋: 如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含乙個。

說明:無空格字元構成乙個單詞。

輸入字串可以在前面或者後面包含多餘的空格,但是反轉後的字元不能包括。

如果兩個單詞間有多餘的空格,將反轉後單詞間的空格減少到只含乙個。

字串反轉 演算法

xiangqi 寫道 字串比如 ad2 lsdkf,lksdjf.sdkfj 倒序排列 sdkfj lksdjf.lsdkf,ad2 每個單詞是空格分開,標點符號當作字母,不能用string的自帶的一些方法,比如indexof,trim,split等方法。大概的偽碼,字串大的話可以用 stringb...

演算法練習 反轉字串

先看看原題 編寫乙個函式,其作用是將輸入的字串反轉過來。示例 1 輸入 hello 輸出 olleh 示例 2 輸入 a man,a plan,a canal panama 輸出 amanap lanac a nalp a nam a 反向遍歷一遍字串中的所有字元,放在乙個陣列裡面,然後再遍歷一遍陣...

演算法探索 反轉字串

編寫乙個函式,其作用是將輸入的字串反轉過來。輸入字串以字元陣列 char 的形式給出。不要給另外的陣列分配額外的空間,你必須原地修改輸入陣列 使用 o 1 的額外空間解決這一問題。你可以假設陣列中的所有字元都是 ascii 碼表中的可列印字元。示例 1 輸入 h e l l o 輸出 o l l e...