代码随想录 | Day07 | 数组part01

54 阅读1分钟

344. 反转字符串

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

    return s
};

541. 反转字符串 II

var reverseStr = function(s, k) {
    let newArr = s.split('')
    for(let i =0;i<s.length;i+=(2*k)){
        let left = 0+i
        let right = (i+k)>s.length? s.length :i+k
        while (left < --right) {
            [newArr[left], newArr[right]] = [s[right], s[left]]
            left++
        }
    }
    s = newArr.join('')
    return s
};

剑指 Offer 05. 替换空格

var replaceSpace = function(s) {
   // 字符串转为数组
  const strArr = Array.from(s);
  let count = 0;

  // 计算空格数量
  for(let i = 0; i < strArr.length; i++) {
    if (strArr[i] === ' ') {
      count++;
    }
  }

  let left = strArr.length - 1;
  let right = strArr.length + count * 2 - 1;

  while(left >= 0) {
    if (strArr[left] === ' ') {
      strArr[right--] = '0';
      strArr[right--] = '2';
      strArr[right--] = '%';
      left--;
    } else {
      strArr[right--] = strArr[left--];
    }
  }

  // 数组转字符串
  return strArr.join('');
};

151. 反转字符串中的单词

var reverseWords = function(s) {
    let newArr = s.trim().split(/\s+/)
    let left = 0
    let right = newArr.length-1
    while(left<right){
        [newArr[left],newArr[right]] = [newArr[right],newArr[left]]
        left++
        right--
    }
    
    return newArr.join(' ')
};

剑指 Offer 58 - II. 左旋转字符串

var reverseLeftWords = function(s, n) {
    let newArr = s.split('')
    while(n--){
        let arg = newArr.shift()
        newArr.push(arg)
    }
    return newArr.join('')
};

var reverseLeftWords = function(s, n) {
  const length = s.length;
  let i = 0;

  while (i < length - n) {
    s = s[length - 1] + s
    i++;
  }
  return s
};