给定一个字符串,反转怎么反转,要求不开辟额外空间?

很简单,思路:

不额外开辟空间,那么就定义中间变量然后 交换就可以了。用最头和最尾交换 那就是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;
  }
}

数据结构与算法      数据结构与算法

本博客所有文章除特别声明外,均采用 CC BY-SA 3.0协议 。转载请注明出处!

TopK问题之前K个高频元素 上一篇
最大子序和 下一篇