[英]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('');
}
请添加您的评论。
可能是面试官希望您处理null
, undefined
或blank
字符串
没有此检查,您的代码可能会抛出此异常
无法读取未定义的属性“ split”
用这个 :
if( str) {
str.split('').reverse().join('')
}
如果值不是,则将评估为true:
或者更具体地说:
if( str && (typeof str == 'string') ) {
// do something
}
请参阅此SO帖子以获取更多详细信息。
本文介绍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.