344.反轉(zhuǎn)字符串
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):ac
用時:0.5h
思路:從字符串左右兩邊向中間遍歷,依次交換兩邊字符。
代碼:

541.?反轉(zhuǎn)字符串II
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):未ac
用時:1h
思路:字符串長度可以表示為,遍歷字符串的時候,步進(jìn)為2k,當(dāng)當(dāng)前位置
,表示處于n個2k中的某一個或者b大于k小于2k,則翻轉(zhuǎn)前k個;反之,則表示處于b,且b小于k,則翻轉(zhuǎn)剩余所有的字符。
代碼:

?劍指Offer?05.替換空格?
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):ac
用時:1h
思路:先計算空格個數(shù),擴張字符串長度,然后從后往前遍歷數(shù)組,用新舊兩個指針,新的指針指向擴張后字符串末尾,舊指針指向擴張前末尾,舊指針指向字符時,將舊指針的值賦給新指針的位置,當(dāng)舊指針指向空格時,新指針連續(xù)賦值為"%20"。
代碼:

151.翻轉(zhuǎn)字符串里的單詞?
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):未ac
用時:1.5h
思路:先反轉(zhuǎn)整個字符串,這樣字符串的順序是反的,但是每個單詞的順序也是反的,接下來就只需要遍歷字符串,把每個單詞識別然后反轉(zhuǎn)該單詞。也可以先雙指針將所有多余空格刪除,再進(jìn)行兩遍翻轉(zhuǎn)。
代碼:

注:關(guān)鍵是每個單詞之間加入空格的邏輯比較難。是每次識別到單詞之前加入還是單詞之后加入,圖片中我注釋的那一行是單詞之后加入。單詞之前加入只需要注意開頭的單詞之前不要加入空格就行了,識別第一個單詞的邏輯只需要知道idx是否等于0。但是在每個單詞之后加入空格,就要知道是否是最后一個單詞,這不能通過idx是否等于n-1判斷,因為如果字符串最后一個單詞和字符串末尾之間有多個空格,那么判斷的邏輯就會變得復(fù)雜,要一直判斷到末尾都是空格才行。
?劍指Offer58-II.左旋轉(zhuǎn)字符串?
文檔和視頻講解:代碼隨想錄(programmercarl.com)
狀態(tài):ac
用時:0.5h
思路:先翻轉(zhuǎn)整個字符串,再分別翻轉(zhuǎn)兩個子字符串。
代碼:
