繁体   English   中英

以下代码在javascript中的字符串反向有什么问题?

[英]What's wrong with following code for string reverse in 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('');
}

请添加您的评论。

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

没有此检查,您的代码可能会抛出此异常

无法读取未定义的属性“ split”

用这个 :

if( str) {
str.split('').reverse().join('')
}

如果值不是,则将评估为true:

  • 空值
  • 未定义
  • N
  • 空字符串(“”)
  • 0

或者更具体地说:

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

请参阅此SO帖子以获取更多详细信息。

您的面试官可能对您的回答不满意有两种可能的方式。

  1. 根据我的经验,当访问员要求您反转字符串时,您不应使用现有功能。 您应该从头开始实施它。 在您的情况下,一种不错的方法是使用递归来解决问题。 看这个链接!

  2. 性能问题! 使用反向功能不是反向字符串的最快方法。 看一下这个!

希望这能解决您的问题:)

本文介绍JavaScript中的unicode符号: JavaScript存在Unicode问题·Mathias Bynens

解决问题的最佳方法是使用Array.from方法,该方法在除Internet Explorer之外的所有浏览器中都适用(MDN为此提供了polyfill)。

这是基于文章答案以反转字符串的解决方案:

 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('f𝌆ff𝐀'), ]); 

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

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

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

回文字符串是一个始终与其反向ex相同的字符串: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);
 }
}
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);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM