Web前端面试指导(二十):JavaScript中如何翻转一个字符串?

题目点评

字符串作在程序中是非常常见的,因为程序中绝大部分的数据都可以当作字符串来处理。需要对字符的处理方法比较熟悉,在回答的时候尽量能够说出多种解决方法更好!

字符串翻转的方法

1)使用字符串函数

[javascript] view plain copy
  1. //str=hello   
  2. function reverseString(str) {  
  3.     var array = str.split('');//['h','e','l','l','o'];  
  4.     array = array.reverse();// ['o','l','l','e','h'];  
  5.     str = array.join('');//"olleh"  
  6.     return str;  
  7. }  
    上面代码可以合并一行代码
[javascript] view plain copy
  1. //str=hello  
  2.   function reverseString(str) {   
  3.       return str.split('').reverse().join('');;  
  4.   }  

2)使用for循环

[javascript] view plain copy
  1. function reverseString(str) {     
  2. var newStr="";  
  3. for(var i=str.length-1;i>=0;i--){  
  4. newStr+=str[i];  
  5. }  
  6. return newStr;  
  7. }  

            使用逆序遍历字符串,从后面将字符串累加起来。
3)使用递归

[javascript] view plain copy
  1. function reverseString(str) {  
  2.  if (str === "") {  
  3.  return "";  
  4.  } else {  
  5.  return reverseString(str.substr(1)) + str.charAt(0);  
  6.  }  
  7. }  
  8. reverseString("hello"); // => olleh  


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

每次调用str === "?"

reverseString(str)

+ 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"


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

 

[javascript] view plain copy
    1. function reverseString(str) {  
    2.  return (str === '') ? '' : reverseString(str.substr(1)) + str.charAt(0);  
    3. }  
    4. reverseString("hello"); // => olleh 
原文地址:https://www.cnblogs.com/zxwy/p/7058615.html