LeetCode344(字符串交换1)

题目:

  编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
  不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

思路:

  循环交换两端字符即可,注意可以使用异或运算交换增加运算效率,同时也可以使用递归实现。

代码:

循环:

1
2
3
4
5
6
7
8
9
public void reverseString(char[] s) {
int l = 0;
int r = s.length - 1;
while(l < r) {
s[l] ^= s[r];
s[r] ^= s[l];
s[l++] ^= s[r--];
}
}

复杂度分析及总结:

循环:

  时间复杂度:
    O(n)。
  空间复杂度:
    O(1)。