「每日一题」反转字符串
题目:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 s 的形式给出。
请注意 :不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
解题(Java):
class Solution {
public void reverseString(char[] s) {
//双指针,左指针从0开始,右指针从数组结尾开始,左右指针对应的数字互换位置,然后同时向中间位置移动,直到左指针>=右指针
int left = 0,right = s.length - 1;
while(left < right){
char temp = s[left];
s[left] = s[right];
s[right] = temp;
left ++;
right --;
}
}
}
思路解析:
使用双指针解题,分析题目可以得出:反转字符其实就是第一个和最后一个互换位置,第二个和倒数第二个互换位置,以此类推,所以可以定义两个指针,左指针从下标0开始,依次向右+1,右指针从末尾开始,依次向左-1,每次都调换指针对应的字符,直到左指针>=右指针(为什么是大于等于呢?当字符串长度为奇数时,左指针=右指针的时候可以结束计算;当字符串长度为偶数时,左指针>右指针的时候可以结束计算)