代码随想录字符串——反转字符串

题目

编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。

不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。

输入:[“h”,“e”,“l”,“l”,“o”] 输出:[“o”,“l”,“l”,“e”,“h”]

思路

不直接使用字符串的库函数

java代码

class Solution{
	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];
			l ++;
			r --;
		}
	}
}

补充知识

swap交换两个数有两种方式

  1. 方式一
int tmp = s[i];
s[i] = s[j];
s[j] = tmp;

  1. 方式二(异或运算)

原理:a ^ a == 0; a ^ 0 ==a

s[i] ^= s[j];
s[j] ^= s[i];
s[i] ^= s[j];

你可能感兴趣的:(代码随想录,数据结构,c++,开发语言,java)