題目描述:
給定乙個字串和乙個整數 k,你需要對從字串開頭算起的每個 2k 個字元的前k個字元進行反轉。如果剩餘少於 k 個字元,則將剩餘的所有全部反轉。如果有小於 2k 但大於或等於 k 個字元,則反轉前 k 個字元,並將剩餘的字元保持原樣。
示例:輸入: s = 「abcdefg」, k = 2
輸出: 「bacdfeg」
要求:該字串只包含小寫的英文本母。
給定字串的長度和 k 在[1, 10000]範圍內。
首先這是一道步長求反的題目,因此我設定了乙個開關開來檢測是否需要進行球反,然後設定乙個步長為k,需要注意的是首指標為i,尾部指標需要判斷一下再賦值,因為可能超過了長度;
**如下:
class solution else
while (start < end)
flag = !flag;
}else
} return new string(tem);
}}
排名靠前的**,他這裡的步長就是2k了,但是也判斷了尾部的長度和本身的length。
class solution
string res=new string(arr);//把字元陣列轉化為字串
return res;
}//逆轉arr陣列中start和end之間的元素
public void reverse(char arr,int start,int end)
}}
字串反轉
據說一道微軟的面試題,要求考慮時間和空間的優化,下面給出幾種通常字串反轉的方法 1 直接陣列操作 char strreverse char str return str 這種做法原來的str沒有儲存,原來的str也改變了 2 指標操作 char strreverse char str return ...
字串反轉
include include include 方法一 將第乙個字元和最後乙個互換,第二個和倒數第二個互換,如此依次迴圈下去 char strrev1 const char str return tmp free tmp 方法二 不額外申請一片儲存字串的記憶體空間,通過中間變數來改變傳遞進來的字串裡...
字串反轉
解法一 第一次看到這題目,想到最簡單 最直覺的解法就是 遍歷字串,將第乙個字元和最後乙個交換,第二個和倒數第二個交換,依次迴圈,即可,於是有了第乙個解法 const char str return tmp 這裡是通過陣列的下標方式訪問字串的字元,實際上用指標直接操作即可。解法二正是基於此,實現 為 ...