给定一个字符串,反转怎么反转,要求不开辟额外空间?
很简单,思路:
不额外开辟空间,那么就定义中间变量然后 交换就可以了。用最头和最尾交换 那就是0和length-1交换,以此类推就可以推演为i与length-i-1交换。因为整数除法直接舍弃小数,所以单数双数对于交换次数的判断没有影响 是length/2
public void reverseString(char[] s)
{
if (s == null || s.length == 0)
{
return;
}
for(int i = 0; i < s.length / 2; i++)
{
char temp = s[i];
s[i] = s[s.length - 1 - i]; // 首尾交换
s[s.length - 1 - i] = temp;
}
}