代码随想录算法训练营第第八天 | 344.反转字符串 、541. 反转字符串II、卡码网:54.替换数字、151.翻转字符串里的单词 、卡码网:55.右旋转字符串

344.反转字符串

建议: 本题是字符串基础题目,就是考察 reverse 函数的实现,同时也明确一下 平时刷题什么时候用 库函数,什么时候 不用库函数
题目链接/文章讲解/视频讲解:https://programmercarl.com/0344.反转字符串.html

/**
 * @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 mid = s[left];
        s[left] = s[right];
        s[right] = mid;
        left++;
        right--;
    }
    return s;
};
  1. 反转字符串II

建议:本题又进阶了,自己先去独立做一做,然后在看题解,对代码技巧会有很深的体会。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0541.反转字符串II.html

/**
 * @param {string} s
 * @param {number} k
 * @return {string}
 */
var reverseStr = function(s, k) {
    let len = s.length;
    const res = s.split('');
    for(i=0;i<len;i+=2*k){
        let l = i;
        let r = i+k-1>=len?(len-1):i+k-1;
        while(l<r){
            let mid = res[l];
            res[l]=res[r];
            res[r]=mid;
            r--;
            l++;
        }
    }
    return res.join('')
};

卡码网:54.替换数字

建议:对于线性数据结构,填充或者删除,后序处理会高效的多。好好体会一下。
题目链接/文章讲解:https://programmercarl.com/kama54.替换数字.html

js不能对字符串做操作,例如let s='dasdasd'  s[1]='d',这种是无效的
最重要学习思路和方法,可以用户数组来操作

151.翻转字符串里的单词

建议:这道题目基本把 刚刚做过的字符串操作 都覆盖了,不过就算知道解题思路,本题代码并不容易写,要多练一练。
题目链接/文章讲解/视频讲解:https://programmercarl.com/0151.翻转字符串里的单词.html

/**
 * @param {string} s
 * @return {string}
 * 还有方法就是用数组,先翻转整个数组,再翻转单词
 */
var reverseWords = function(s) {
    s = s.trim();
    const arr = s.split(' ');
    const res = [];
    console.log(arr)
    for(let i=0;i<arr.length;i++){
        if(arr[i]===''){
            continue;
        }
        res.push(arr[i]);
    }
    res.reverse();
    return res.join(' ')
};

卡码网:55.右旋转字符串

建议:题解中的解法如果没接触过的话,应该会想不到
题目链接/文章讲解:
https://programmercarl.com/kama55.右旋字符串.html

其他方法思路是,先翻转整个字符串,再翻转特定的字符,“负负得正”
      function dealStr(num, str){
        
        let len = str.length - num;
        let str1 = str.substr(len, num);
        let str2 = str.substr(0,len);
        return str1+str2;
      }
posted @ 2024-05-15 22:44  YuanYF6  阅读(2)  评论(0编辑  收藏  举报