代码随想录算法训练营第八天|344.反转字符串、 541. 反转字符串II、卡码网:54.替换数字

42 阅读1分钟

344.反转字符串

相关链接: 题目链接 文章讲解 视频讲解

解题思路

双指针

代码

var reverseString = function(s) {
   for(let left = 0,right = s.length-1; left<=right; left++,right--) {
        let temp = s[left];
        s[left] = s[right];
        s[right] = temp;
   }
    return s;
};

541. 反转字符串II

相关链接: 题目链接 文章讲解 视频讲解

解题思路

代码

var reverseStr = function(s, k) {
    var arr = s.split('');
    // 注意: 2 * k 需要括号括起来
    var count = Math.floor(s.length / (2 * k));
    var last = s.length - count * 2 * k;
    if(last >= k && last < 2 * k){
        count++;
    }
    for(let i = 0; i< count; i++){
        let left =  i * 2 * k, right =  i * 2 * k + k - 1;
        while(left < right){
            // 字符串不能直接交换,需要转换为数组
            [arr[left], arr[right]] =  [arr[right], arr[left]]
            left++;
            right--;
        }
    }
    if(last < k){
        let left =  count * 2 * k, right =  s.length - 1;
        while(left < right){
            [arr[left], arr[right]] =  [arr[right], arr[left]]
            left++;
            right--;
        }
    }
    return arr.join('');
};

卡码网:54.替换数字

相关链接: 题目链接 文章讲解

解题思路

代码

let originalString = "The price is 100 dollars.";
let newString = originalString.replace(/(\d)/g, function(match, p1) {
    return 'number'; 
});
console.log(newString);