• 算法|344.反转字符串 541. 反转字符串II 卡码网:54.替换数字 151.翻转字符串里的单词 卡码网:55.右旋转字符串


    344.反转字符串

    考察reverse, 也可以用其他方法

    /** 
     * @param {character[]} s
     * @return {void} Do not return anything, modify s in-place instead.
     */
    var reverseString = function (s) {
      return s.reverse();
    };
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    541. 反转字符串

    思路: 一般是i++, 这次给个猛的 i+=2*k
    然后下面的while循环也是挺讨巧的, 后续要多读几次, 不然还不好理解

    /**

    • @param {string} s
    • @param {number} k
    • @return {string}
      */

    var reverseStr = function (s, k) {
    const resArr = s.split(“”);
    let len = s.length;
    // 每隔 2k 个字符的前 k 个字符进行反转
    for (let i = 0; i < resArr.length; i += 2 * k) {
    let l = i - 1,
    r = i + k > len ? len : i + k;
    while (++l < --r) [resArr[l], resArr[r]] = [resArr[r], resArr[l]];
    }
    return resArr.join(“”);
    };
    console.log(reverseStr(“abcdefg”, 2));

    151.翻转字符串里的单词

    思考: 还是reverse的用法, 注意中间空格的处理

    /**
     * @param {string} s
     * @return {string}
     */
    var reverseWords = function (s) {
      let str = s.trim();
      const arr = str.split(" ");
      // 过滤掉空数组元素
      const newArr = arr.filter((item) => item);
      return newArr.reverse().join(" ");
    };
    console.log(reverseWords("a good   example"));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    54.替换数字

    思考:

    • 对非数字的处理 !isNaN(parseInt())
    • 对ACM的熟练处理 , 结果要console出来 ,而不是return
    let readline = require("readline");
    
    const rl = readline.createInterface({
      input: process.stdin,
      output: process.stdout,
    });
    
    rl.on("line", function (line) {
      let arr = line.split("");
      for (let i = 0; i < arr.length; i++) {
        if (!isNaN(parseInt(arr[i]))) {
          arr[i] = "number";
        }
      }
      console.log(arr.join(""));
    });
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17

    55.右旋转字符串

    感觉和541题目很像, 后期练习下

    459. 重复的子字符串

    /**
     * @param {string} s
     * @return {boolean}
     */
    var repeatedSubstringPattern = function (s) {
      const str = s + s;
      //   为什么包含就true了呢
      return str.substring(1, str.length - 1).includes(s);
    };
    console.log(repeatedSubstringPattern("abab"));
    console.log(repeatedSubstringPattern("aba"));
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
  • 相关阅读:
    [Linux]如何配置定期任務腳本,並將執行結果寄到外部郵箱? (上)
    LRU算法
    springboot的多模块开发
    深入理解 Python 虚拟机:字典(dict)的优化
    VS Code使用node.js编译,代码自动补全方法
    MySQL的DATE_FORMAT函数使用
    Biome-BGC生态系统模型与Python融合技术:揭秘未来生态预测新趋势
    ORM数据库操作
    LeetCode每日一练 —— 环形链表问题(面试四连问)
    vue结合vue-electron创建应用程序
  • 原文地址:https://blog.csdn.net/shjavadown/article/details/136383067