代碼隨想錄算法訓(xùn)練營第八天| 344、541、劍指offer05和58-II、151

344.反轉(zhuǎn)字符串

文檔和視頻講解:代碼隨想錄(programmercarl.com)

狀態(tài):ac

用時:0.5h

思路:從字符串左右兩邊向中間遍歷,依次交換兩邊字符。

代碼:

圖1



541.?反轉(zhuǎn)字符串II

文檔和視頻講解:代碼隨想錄(programmercarl.com)

狀態(tài):未ac

用時:1h

思路:字符串長度可以表示為n\times (2\times k) + b,遍歷字符串的時候,步進(jìn)為2k,當(dāng)當(dāng)前位置i+k\leq n,表示處于n個2k中的某一個或者b大于k小于2k,則翻轉(zhuǎn)前k個;反之,則表示處于b,且b小于k,則翻轉(zhuǎn)剩余所有的字符。

代碼:

圖2



?劍指Offer?05.替換空格?

文檔和視頻講解:代碼隨想錄(programmercarl.com)

狀態(tài):ac

用時:1h

思路:先計算空格個數(shù),擴張字符串長度,然后從后往前遍歷數(shù)組,用新舊兩個指針,新的指針指向擴張后字符串末尾,舊指針指向擴張前末尾,舊指針指向字符時,將舊指針的值賦給新指針的位置,當(dāng)舊指針指向空格時,新指針連續(xù)賦值為"%20"。

代碼:

圖3

151.翻轉(zhuǎn)字符串里的單詞?

文檔和視頻講解:代碼隨想錄(programmercarl.com)

狀態(tài):未ac

用時:1.5h

思路:先反轉(zhuǎn)整個字符串,這樣字符串的順序是反的,但是每個單詞的順序也是反的,接下來就只需要遍歷字符串,把每個單詞識別然后反轉(zhuǎn)該單詞。也可以先雙指針將所有多余空格刪除,再進(jìn)行兩遍翻轉(zhuǎn)。

代碼:

圖4

注:關(guān)鍵是每個單詞之間加入空格的邏輯比較難。是每次識別到單詞之前加入還是單詞之后加入,圖片中我注釋的那一行是單詞之后加入。單詞之前加入只需要注意開頭的單詞之前不要加入空格就行了,識別第一個單詞的邏輯只需要知道idx是否等于0。但是在每個單詞之后加入空格,就要知道是否是最后一個單詞,這不能通過idx是否等于n-1判斷,因為如果字符串最后一個單詞和字符串末尾之間有多個空格,那么判斷的邏輯就會變得復(fù)雜,要一直判斷到末尾都是空格才行。


?劍指Offer58-II.左旋轉(zhuǎn)字符串?

文檔和視頻講解:代碼隨想錄(programmercarl.com)

狀態(tài):ac

用時:0.5h

思路:先翻轉(zhuǎn)整個字符串,再分別翻轉(zhuǎn)兩個子字符串。

代碼:

圖5
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容