描述
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
解题思路
这道题和之前写过的翻转数组的题目类似,双指针遍历到前后两个指针相会即可完成原地翻转。
代码如下:
class Solution {
public void reverseString(char[] s) {
char temp;
for (int i = 0; i < s.length; i++) {
if (i<(s.length-1-i)){
temp = s[i];
s[i] = s[s.length-1-i];
s[s.length-1-i] = temp;
}else {
break;
}
}
}
}
运行结果:
10:29 info
解答成功:
执行耗时:1 ms,击败了100.00% 的Java用户
内存消耗:45.2 MB,击败了35.74% 的Java用户
题解
双指针
class Solution {
public void reverseString(char[] s) {
int n = s.length;
for (int left = 0, right = n - 1; left < right; ++left, --right) {
char tmp = s[left];
s[left] = s[right];
s[right] = tmp;
}
}
}
作者:LeetCode-Solution
链接:https://leetcode-cn.com/problems/reverse-string/solution/fan-zhuan-zi-fu-chuan-by-leetcode-solution/
来源:力扣(LeetCode)
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。
小结
简单题目