344. 反转字符串 + 541. 反转字符串 II JavaScript实现

103 阅读1分钟

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("")
};