字串逆轉問題

2021-05-27 16:27:49 字數 917 閱讀 6579

問題描述: 

長度為n的字串,在第 i 的位置處向左旋轉或者向右旋轉。比如字串abcdefgh 長度n為8 ,若將該字串在i=3的位置處,向左旋轉則得到字串defghabc 。問題要求:時間複雜度要和n成正比,記憶體幾十位元組。

問題解決方法:

數學基礎   即將矩陣 ab  變為ba 。  

ab---> a'b--->a'b'------>(a'b')'--------->ba  。  其中 '   表示矩陣的轉置。

解決方法:  

將abc 看做a ,defgh 看做 b 

具體演算法:

(1)        abcdefgh----->  cbadefgh                      reverse(0 , i - 1)

(2)        cbadefgh------>  cbahgfed                     reverse( i  ,   n - 1)

(3)          cbahgfed ------> defghabc                     reverse(0 , n - 1)

總結:通過上述(1),(2),(3) 即完成了字串轉置 。每乙個reverse() 函式的時間複雜度均為o(n) ,空間複雜度只利用了乙個臨時變數,滿足上述要求。

#include 

<

iostream

>

<

cstring

>

using

namespace

std ;

const

intsize   =40

;void

reverse(

char

*a , 

intbegin , 

intend)

intmain()

字串逆轉問題2

給定乙個字串,你需要反轉字串中每個單詞的字元順序,同時仍保留空格和單詞的初始順序。示例 1 輸入 let s take leetcode contest 輸出 s tel ekat edocteel tsetnoc 注意 在字串中,每個單詞由單個空格分隔,並且字串中不會有任何額外的空格。如下 pub...

字串逆轉問題1

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

字串逆轉

題意 輸入乙個字串,逆向輸出該串。sample input 3frankly,i don t think we ll make much money out of this scheme.madam i m adam sample output hcum ekam ll ew kniht t nod...