有趣的算法题:反转不包含字母的字符串

515 阅读1分钟

题目描述

博主最近看面经的时候,发现字节在面试的时候,问了候选人一道这样的算法题:请反转不包含字母的字符串。

image.png

解题思路

  • 首先将字符串分割为单个的字符。
  • 使用一个变量记录遍历到的字符是字母还是数字。
  • 如果属于数字或者横线则将其倒序加入到临时数组中,如果不属于数字或者横线则将临时数组的内容加入到结果数组并拼接字符,然后将临时数组给清空。
  • 最后返回数组。
function reverseStr(str) {
  const result = [];
  const arr = str.split('');
  let temp = [];
  let isNumber = false;
  for (let i = 0; i < arr.length; i++) {
    if (Number(arr[i]) >= 0 || Number(arr[i] <= 9 || arr[i] === '-')) {
      isNumber = true;
      temp.unshift(arr[i]);
    } else {
      isNumber = false;
      result.push(...temp);
      result.push(arr[i]);
      temp = [];
    }
  }
  return result.join('');
}
reverseStr('123abd3-adfz-34-akjkfaf')
  • 2.0版本
function reverseStr(str) {
  let res = '';
  let temp = [];
  for (let v of str) {
    if (Number(v) >= 0 || Number(v) <= 9 || v === '-') {
      temp.unshift(v);
    } else {
      res += temp.join('') + v;
      temp = [];
    }
  }
  return res;
}

reverseStr('123abd3-adfz-34-akjkfaf')

题目反思

遇到陌生的题目时,不要慌张,借助第三方数组和变量来辅助我们解题是一个很关键的思路,本题就是通过借助数组和flag来帮助解题的。