题目链接:https://leetcode.cn/problems/reverse-string/submissions/379393049/
题目描述
编写一个函数,其作用是将输入的字符串反转,输入字符串以字符数组s
的形式给出。
示例 1
输入:s = [“h”,“e”,“l”,“l”,“o”]
输出:[“o”,“l”,“l”,“e”,“h”]
示例 2
输入:s = [“H”,“a”,“n”,“n”,“a”,“h”]
输出:[“h”,“a”,“n”,“n”,“a”,“H”]
提示
- 1 <= s.length <= 105
- s[i] 都是 ASCII 码表中的可打印字符
Code
解法一:首尾交换
将字符串反转本质就是重复赋值,直接借助一个临时变量交换即可
class Solution {
void reverseString(char[] s) {
for (int i = 0; i < s.length / 2; i++) {
char temp = s[i];
s[i] = s[s.length - i - 1];
s[s.length - i - 1] = temp;
}
}
}
交换数值的方式还有通过数学方式和位运算两种方法
方法一:定义临时变量
int temp = num1
num1 = num2
num2 = temp
方法二:数学运算
num1 = num1 + num2
num2 = num1 - num2
num1 = num1 - num2
方法三:异或位运算
num1 = num1 ^ num2
num2 = num1 ^ num2
num1 = num1 ^ num2
这些方法都可以完成交换操作,也可以通过设置为对象的属性然后对对象进行直接赋值交换,因为引用数据类型都是指向其对应的地址,操作都是通过地址去检索值,基本数据类型就是单纯的值操作