zoukankan      html  css  js  c++  java
  • 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 
  • 相关阅读:
    windows下Yarn安装与使用(两种方法)
    git配置公钥---解决码云出现git@gitee.com: Permission denied (publickey)
    npm使用国内镜像的两种方法
    【LeetCode】33. Search in Rotated Sorted Array (4 solutions)
    【LeetCode】83. Remove Duplicates from Sorted List
    【LeetCode】82. Remove Duplicates from Sorted List II
    【LeetCode】85. Maximal Rectangle
    【LeetCode】84. Largest Rectangle in Histogram
    【LeetCode】87. Scramble String
    【LeetCode】162. Find Peak Element (3 solutions)
  • 原文地址:https://www.cnblogs.com/zxwy/p/7058615.html
Copyright © 2011-2022 走看看