344. 反转字符串
使用双指针,即首尾两个指针,交换他们的值(注意是两两交换)。然后指针相对移动即可。
var reverseString = function(s) {
// 使用双指针,头部和尾部各一个。交换数据即可
let i = 0, j = s.length-1;
while(i<j){
// let temp = s[i]
// s[i] = s[j]
// s[j] = temp
// 交换两个值的简单写法,解构赋值
[s[i],s[j]] = [s[j],s[i]]
i++
j--
}
return s
};
541. 反转字符串 II
题意:反转k个,下k个不反转,如此反复
做法:使用一个标记规律的反转字符串,注意需要把每部分的反转存到数组,然后转换成字符串。
var reverseStr = function(s, k) {
// 反转k个,下k个不反转,如此反复
// 将每次反转的结果依次存到数组中
let res = []
// 使用一个标记
let flag = 1
// 遍历的时候,每隔k个进行判断
for(let i=0; i<s.length; i += k){
if(flag){
// 反转前k个
res.push(s.substring(i,i+k).split('').reverse().join(''))
flag = 0
}else{
// 隔k个不反转
res.push(s.substring(i,i+k))
flag = 1
}
}
// 把最后的结果转换成字符串
return res.join("")
};