【问题标题】:Reversing string returning the original [duplicate]返回原始字符串的反转字符串[重复]
【发布时间】:2020-02-08 00:45:09
【问题描述】:

学习 JavaScript 并做一些问题。我正在尝试反转给定的字符串,但我不知道为什么我的逻辑是错误的,因为它通过调试器运行,看起来它正在按预期进行交换。

非常感谢任何帮助,我知道这很简单,但这意味着我错过了一些重要的东西。

function reverse(s) {
  let i = 0;
  let j = s.length - 1;

  while (i < j) {
    let temp = s[j];
    s[j] = s[i];
    s[i] = temp;
    i++;
    j--;
  }
  return s;
}

console.log(reverse("hello"));

【问题讨论】:

  • 我只会向后循环原始字符串并将这些字符连接到一个新字符串上,然后返回它。 function reverse(s) { let j = s.length - 1; let r = '' while (j &gt;= 0) { r += s[j]; j--; } return r; } console.log(reverse("hello"));
  • javascript 字符串是不可变的,您可以参考此链接以获得更好的解释。 stackoverflow.com/questions/1431094/…

标签: javascript algorithm


【解决方案1】:

由于字符串是不可变的,你可以将字符串与空字符串分割成一个数组,并在返回之前加入它们:

function reverse(s) {
  s = s.split('');  // split here
  let i = 0;
  let j = s.length - 1;

  while (i < j) {
    let temp = s[j];
    s[j] = s[i];
    s[i] = temp;
    i++;
    j--;
  }
  return s.join(''); // join and return
}

console.log(reverse("hello"));

【讨论】:

    【解决方案2】:

      function reverse(word) {
          let wordArray = word.split('');
          wordArray.reverse();
          return wordArray.join('');
       }
       console.log(reverse("hello"));

    【讨论】:

    • 虽然很好,但这并不能真正回答 OP 的问题,即他们的代码为什么返回原始字符串。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-02-07
    • 2023-04-05
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多