加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Windows > 正文

字符串反转_JavaScript

发布时间:2016-11-25 00:40:46 所属栏目:Windows 来源:站长网
导读:今天在freeCodeCamp上面刷题,碰到一题是有关于字符串反转。反转一个字符串是JavaScript中常见的面试题之一。可能面试官会给你一个字符串“Hello Word!”,让你通过JavaScript的方法,将其变成"!droW olleH"。 我也是初学者,利用前面所学数组相关的知识以
每次调用str === "#63;" reverseString(str.subst(1)) + str.charAt(0) 第一次调用 reverseString("Hello") reverseString("ello") + "h" 第二次调用 reverseString("ello") reverseString("llo") + "e" 第三次调用 reverseString("llo") reverseString("lo") + "l" 第四次调用 reverseString("lo") reverseString("o") + "l" 第五次调用 reverseString("o") reverseString("") + "o"

第二部分的递归方法。

每次调用 返回 第五次调用 reverseString("") + "o" = "o" 第四次调用 reverseString("o") + "l" = "o" + "l" 第三次调用 reverseString("lo") + "l" = "o" + "l" + "l" 第二次调用 reverserString("llo") + "e" = "o" + "l" + "l" + "e" 第一次调用 reverserString("ello") + "h" = "o" + "l" + "l" + "e" + "h"

上面的方法还可以继续改良一下,改成三元操作符

function reverseString(str) { 
return (str === '') #63; '' : reverseString(str.substr(1)) + str.charAt(0);}
reverseString("hello"); 
// =gt; olleh

还可以换成这样的方式

function reverseString(str) { 
return str  reverseString(str.substr(1)) + str[0];
}reverseString("hello");
 // =gt; olleh

其他方法

除了上面的方法之外,其实还有其他一些方法:

方法一复制代码 代码如下:function reverseString (str) { var newString = []; for (var i = str.length - 1, j = 0; i gt;= 0; i--, j++) { newString[j] = str[i]; } return newString.join('');}reverseString("hello"); // =gt; olleh方法二复制代码 代码如下:function reverseString (str) { for (var i = str.length - 1, newString = ''; i gt;= 0; newString += str[i--] ) { } return newString;}reverseString("hello"); // =gt; olleh方法三复制代码 代码如下:function reverseString (str) { function rev(str, len, newString) { return (len === 0) #63; newString : rev(str, --len, (newString += str[len])); } return rev(str, str.length, '');}reverseString("hello"); // =gt;olleh方法四复制代码 代码如下:function reverseString (str) { str = str.split(''); var len = str.length, halfIndex = Math.floor(len / 2) - 1, newString; for (var i = 0; i lt;= halfIndex; i++) { newString = str[len - i - 1]; str[len - i - 1] = str[i]; str[i] = newString; } return str.join('');}reverseString("hello"); // =gt; olleh方法五复制代码 代码如下:function reverseString (str) { if (str.length lt; 2) { return str; } var halfIndex = Math.ceil(str.length / 2); return reverseString(str.substr(halfIndex)) + reverseString(str.substr(0, halfIndex));}reverseString("hello"); // =gt;olleh方法六复制代码 代码如下:function reverseString(str) { return [].reduceRight.call(str, function(prev, curr) { return prev + curr; }, '');}reverseString("hello"); // =gt;ollehES6的方法

在ES6中,可以变得更为简单一些,如:

[...str].reverse().join('');

[...str].reduceRight( (prev, curr) =gt; prev + curr );

或者:

const reverse = str =gt; str reverse(str.substr(1)) + str[0];

字符串反转是一个小而简单的算法,前面也说了,常被用来面试JavaScript基础。你可以使用上面各种方法来解决这个问题,甚至使用更为复杂的解决方案。如果你有更好的方法,欢迎在下面的评论中补上,与我们一起分享。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

结合起来,我们可以这样做实现字符串反向:

function reverseString(str) { if (str === "") { 
return ""; } else { 
return reverseString(str.substr(1)) + str.charAt(0); }
}reverseString("hello"); 
// =gt; olleh

第一部分的递归方法。你需要记住,你不会只调用一次,你将会有几个嵌套的调用。

热点阅读