题目:
编写一个函数,其作用是将输入的字符串反转过来。输入字符串以字符数组 char[] 的形式给出。
不要给另外的数组分配额外的空间,你必须原地修改输入数组、使用 O(1) 的额外空间解决这一问题。
你可以假设数组中的所有字符都是 ASCII 码表中的可打印字符。
解法:
// Solution One -- fold in half
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
let reverseString1 = function(s) {
let len = s.length;
if(len <= 1){
return s
}else{
for(let i = 0, mid = Math.floor(len / 2); i < mid; i++){
[s[i], s[len - 1 - i]] = [s[len - 1 - i], s[i]]
}
}
return s
};
// Solution Two -- Double pointer双指针
let reverseString2 = function(s) {
let p = 0, q = s.length - 1;
while(p < q){
[s[p], s[q]] = [ s[q], s[p] ]
p++
q--
}
return s
}