一、反转字符串
直接双指针
/**
* @param {character[]} s
* @return {void} Do not return anything, modify s in-place instead.
*/
var reverseString = function(s) {
let left = 0
let right = s.length - 1
while(left < right) {
[s[left], s[right]] = [s[right], s[left]]
left++
right--
}
return s
};
二、反转字符串2
先把字符串转为数组,遍历的时候间隔为2 * k,然后反转前k个
/**
* @param {string} s
* @param {number} k
* @return {string}
*/
var reverseStr = function (s, k) {
s = s.split('')
for (let i = 0; i < s.length; i += 2 * k) {
let left = i
let right = i + k - 1
while (left < right) {
[s[left], s[right]] = [s[right], s[left]]
left++
right--
}
}
return s.join('')
};
三、翻转字符串里的单词
/**
* @param {string} s
* @return {string}
*/
var reverseWords = function(s) {
let res = []
let cur = ''
for(let i = 0; i < s.length; i++) {
if(s[i] === ' ') {
if(cur) {
res.push(cur)
cur = ''
}
} else {
cur += s[i]
}
}
if (cur) {
res.push(cur)
}
let left = 0
let right = res.length - 1
while(left < right) {
[res[left], res[right]] = [res[right], res[left]];
left++
right--
}
return res.join(' ')
};