编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
class Solution {
public void reverseString(char[] s) {
int left = 0;
int right = s.length-1;
while(left <= right){
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
left++;
right--;
}
}
}
// class Solution {
// public void reverseString(char[] s) {
// int n = s.length;
// for (int left = 0, right = n - 1; left < right; ++left, --right) {
// char tmp = s[left];
// s[left] = s[right];
// s[right] = tmp;
// }
// }
// }
思路:
这题算是最简单的双指针题了吧,就是前后交换,设定两个指针,一个从前开始一个从后开始,然后互相交换,然后前面的向后走,后面的向前走,直到相遇就交换完成了。
图解: