代码随想录day8打卡

344

简单的双指针

执行用时:76 ms, 在所有 JavaScript 提交中击败了95.79%的用户

内存消耗:48.1 MB, 在所有 JavaScript 提交中击败了24.30%的用户

/**
 * @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){
        let temp = s[left]
        s[left] = s[right]
        s[right] = temp
        left += 1
        right -= 1
    }
    return s
};

解法很多内置函数

str.split('').reverse().join('')

https://juejin.cn/post/6902323901888462862

541

执行用时:56 ms, 在所有 JavaScript 提交中击败了94.09%的用户

内存消耗:43.2 MB, 在所有 JavaScript 提交中击败了88.06%的用户

/**
 * @param {string} s
 * @param {number} k
 * @return {string}
 */
var reverseStr = function(s, k) {
    let start = 0
    let end = 2*k
    const len = s.length
    let res = ''
    while(start < len){
        end = start + k
        res = res + reverseSubStr(s.slice(start, end))
      	//slice的用法:end - end +k,  end +k 如果小于 字符串长度则默认是字符串最后一位,不会溢出
        res = res + s.slice(end, end + k)
        start = start + 2*k
    }
    return res
};

var reverseSubStr = function(str){
    return str.split('').reverse().join('')
}

剑指offer 05

/**
 * @param {string} s
 * @return {string}
 */
var replaceSpace = function(s) {
    let res = ""
    for(let i = 0; i < s.length; i++){
        if(s[i] == ' '){
            res += '%20'
        }else{
            res += s[i]
        }
    }
    return res
};

151

initial solution

/**
 * @param {string} s
 * @return {string}
 */
var reverseWords = function(s) {
    let res = ''
    const sList = s.split(' ')
    for(let i = sList.length; i > 0; i--){
        if(sList[i-1] != ''){
            res += sList[i-1] + ' '
        }
    }
    return res.slice(0, res.length-1)
};

https://blog.csdn.net/weixin_44350171/article/details/111873906?spm=1001.2101.3001.6661.1&utm_medium=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111873906-blog-108824580.pc_relevant_multi_platform_whitelistv4&depth_1-utm_source=distribute.pc_relevant_t0.none-task-blog-2%7Edefault%7ECTRLIST%7ERate-1-111873906-blog-108824580.pc_relevant_multi_platform_whitelistv4&utm_relevant_index=1

看完文章,参考代码随想录

es6 特性解构

function reverse(strArr, start, end){
    let left = start;
    let right = end;
    while(left < right){
        // es 6 的新特性
        [strArr[left], strArr[right]] = [strArr[right], strArr[left]]
        left++
        right--
    }
}
function removeExtraSpace(strArr){
    let slowIndex = 0;
    let fastIndex = 0;
    while(fastIndex < strArr.length){
        if(strArr[fastIndex] === ' ' && (fastIndex === 0 || strArr[fastIndex - 1] ==' ')){
            fastIndex++
        }else{
            strArr[slowIndex++] = strArr[fastIndex++] // ++ 执行完这句语句++
        }
    }

    // 移除末尾空格
    strArr.length = strArr[slowIndex - 1] === ' '? slowIndex - 1 : slowIndex
}

剑指Offer58-II.左旋转字符串

/**
 * @param {string} s
 * @param {number} n
 * @return {string}
 */
var reverseLeftWords = function(s, n) {
    let len = s.length
    s = s + s
    return s.slice(n,  len + n)
};
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值