剑指Offer(二):替换空格

题目:请实现一个函数,讲一个字符串中的空格替换成%20。例如字符串为Hello World,经过替换后的字符串为Hello%20World。

解:实现1-直接遍历然后替换,时间复杂度为O(N^2);
实现2- 双指针时间复杂度为O(N);

//实现1 正则
function replaceSpace(str) {
  //直接正则replace所有空格
  return str.replace(/\s/g, "%20");

  //先过滤去除字符串前后可能有的空格,再用正则去replace所有空格
  // return str.trim().replace(/\s/g, "%20");
}

//实现2 双指针
function replaceSpace2(str) {
  if (!str || !str.length) {
    return "";
  }
  let chs = [];
  // i:新字符串的下标、j:原字符串的下标
  for (let i = 0, j = 0; j < str.length; j++) {
    if (str[j] === " ") {
      chs[i++] = "%";
      chs[i++] = "2";
      chs[i++] = "0";
    } else {
      chs[i++] = str[j];
    }
  }
  return chs.join("");
}

你可能感兴趣的:(剑指Offer(二):替换空格)