【问题标题】:string is not returning correct reverse string in javascript字符串没有在javascript中返回正确的反向字符串
【发布时间】:2019-09-03 20:41:58
【问题描述】:

我正在尝试使用以下函数反转字符串,但它没有返回正确的字符串。如下所示,我尝试使用 'devesh' 它给出了 'hseesh'

var reverseString = function(s) {
    let j = 0
    for(let i=s.length-1; i>=0; i--){
        s[j++] = s[i]
    }
    return s
};

console.log(reverseString(['d', 'e', 'v', 'e', 's', 'h']))
// ['h', 's', 'e', 'v', 'e', 'd']`enter code here`

【问题讨论】:

  • 您在字符串到达​​s[j++] = s[i] 开头之前覆盖它。您可以创建一个新数组并将字母推送到数组中。

标签: javascript data-structures array-algorithms


【解决方案1】:

您可以避免使用额外的变量j,而只需将每个字母推入结果数组,如下所示:

const reverseString = values => {  
  const result = [];
  for(let i = values.length - 1; i >= 0; i--) {
    result.push(values[i]);
  }  
  return result;
};

console.log(reverseString(['a','b','c']))

【讨论】:

    【解决方案2】:

    这是一种更简单的方法:

    var reverseString = function(s) {
      return s.reverse();
    };
    

    【讨论】:

    • 好吧,你正在将一个数组传递给函数,所以要弄清楚你想要哪个。
    • 我的立场是正确的。我没有意识到传递了一个数组。 (我也不是OP。)
    • 哎呀,对不起,我以为你是!
    【解决方案3】:

    它不起作用,因为您覆盖了 for 循环内的 s

    相反,创建一个空的并填充它:

    var reverseString = function(s) {
      let j = 0;
      let newS = [];
    
      for (let i = s.length - 1; i >= 0; i--) {
        newS[j++] = s[i]
      }
      return newS;
    };
    
    console.log(reverseString(['d', 'e', 'v', 'e', 's', 'h']))

    【讨论】:

      猜你喜欢
      • 2014-06-14
      • 1970-01-01
      • 2012-08-07
      • 2014-05-28
      • 2013-10-07
      • 1970-01-01
      • 1970-01-01
      • 2017-04-05
      • 1970-01-01
      相关资源
      最近更新 更多