題目描述:
編寫一個函數,其作用是將輸入的字符串反轉過來。
示例 1:
輸入: "hello" 輸出: "olleh"
示例 2:
輸入: "A man, a plan, a canal: Panama" 輸出: "amanaP :lanac a ,nalp a ,nam A"
相關話題:雙指針;字符串。
相似題目:345 反轉字符串中的元音字母;541 反轉字符串II
解題思路:
- 建立兩個指針,
- 一個從0開始,從前往後遍歷;
- 一個從最後一個元素開始,從後往前 遍歷;
- 交換兩個指針指向的元素;
- 當兩個指針相遇時,循環結束。
class Solution {
public:
string reverseString(string s) {
int i = 0, j = s.length() - 1;
// vector<char> cvec;
while(i < j){
char temp;
temp = s[i];
s[i] = s[j];
s[j] = temp;
i++;
j--;
}
return s;
}
};
技術要點:雙指針。
總結:對於這種反轉類的題目,尤其是以中間元素爲座標軸的反轉,用雙指針進行解決是目前比較常見的一種解決方案。當兩個指針相遇時,循環結束。注意,本題目不需要新創建一個數組或向量來存儲,只需要在需要在原來的數組上操作即可。