在javascript中使用字符串反向代码有什么问题?

时间:2017-08-30 10:55:00

标签: javascript

function stringReverse(str){
    return str.split('').reverse().join('');
}

在一次采访中,我被要求扭转一根绳子。我通过上面的代码解决了它,但我的采访者说这是一个糟糕的解决方案。然后我用了循环,但他不高兴。

function stringReverse(str){
    var a = str.split(''), b=[];
    for(var i=0;i<arr.length;i++){
       b.push(a[a.length-1-i]);
    }
    return b.join('');
}

请添加您的评论。

6 个答案:

答案 0 :(得分:4)

面试官可能希望您处理nullundefinedblank字符串

如果不进行此检查,您的代码可能会抛出此异常

  

无法读取未定义

的属性'split'

使用它:

if( str) {
str.split('').reverse().join('')
}
如果值不是,

将评估为true:

  • 未定义
  • 的NaN
  • 空字符串(“”)
  • 0

或更具体地说:

if( str && (typeof str == 'string') ) {
   // do something
}

请参阅此SO post了解详情。

答案 1 :(得分:1)

面试官可能对您的答案感到满意,有两种可能的方法。

  1. 根据我的经验,当面试官要求你翻转字符串时,你不应该使用现有的功能。你应该从头开始实现它。在您的情况下,一个很好的方法是使用递归来解决问题。 Look at this link!

  2. 性能问题!使用反向函数不是反转字符串的最快方法。 Check this out!

  3. 希望这能解决你的问题:)

答案 2 :(得分:1)

本文讨论JavaScript中的unicode符号:JavaScript has a Unicode problem · Mathias Bynens

问题的最佳解决方案使用Array.from方法,该方法适用于除Internet Explorer之外的所有浏览器(MDN都有一个polyfill)。

这是一个基于文章回答字符串的解决方案:

&#13;
&#13;
function strReverse(str) {
  //Only allow numbers and strings to pass, else return empty string
  if (typeof str != 'string' && typeof str != 'number') {
    return '';
  }
  //Return the reversed string
  return Array.from(str.toString()).reverse().join('');
}
//TESTS
console.log([
  strReverse(),
  strReverse(null),
  strReverse("null"),
  strReverse(true),
  strReverse("▼ ▼▲ ▼"),
  strReverse(1138),
  strReverse(''),
  strReverse('fff'),
]);
&#13;
&#13;
&#13;

答案 3 :(得分:0)

在ECMAScript 6中,您可以反转字符串,如下所示

var string = "hello";
var str = [...string].reverse().join('');
console.log(str);

答案 4 :(得分:0)

当我达到第10个标准时,我们的计算机老师总是要求每个学生编写一个代码来检查给定的字符串是否是回文。

回文字符串是一个字符串,它总是与其反向字符串相同:mom = mom

在一次采访中,如果有人要求你写一个代码来反转一个字符串。然后他想看看你的逻辑方法来解决问题。任何编程语言中的现有函数都有代码,这些代码实际上采用了逻辑方法并解决了问题。

java中的反向代码

import java.util.*;

class Reverse
{
  public static void main(String args[])
{
   String original, reverse = "";
   Scanner in = new Scanner(System.in);
   System.out.println("Enter a string to get reverse");
   original = in.nextLine();
   int length = original.length();
   for ( int i = length - 1; i >= 0; i-- )
     reverse = reverse + original.charAt(i);
 }
}

答案 5 :(得分:0)

String words[] = str.split("\\s");
    String rev = "";
    for (String w : words) {
        StringBuilder sb = new StringBuilder(w);
        sb.reverse();
        rev += sb.toString() + " ";
    }
    System.out.println("\n reverse string=" + rev);