• 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 
  • 相关阅读:
    成长之思考题
    HP LaserJet P2055dn 通过网络连接打印机用户指南
    【转载】大牛给计算机专业学生的7个建议
    CMake 复制文件方法
    Gitee Git bash VSCode操作简易说明
    Qwt 编译 配置 使用
    Clion+Cmake+Qt5+Qwt+msys2+MinGW在Windows下的安装配置使用教程
    基于Cmake+QT+VS的C++项目构建开发编译简明教程
    在WINDOWS中安装使用GSL(MinGW64+Sublime Text3 & Visual Studio)
    JavaScript学习(2)call&apply&bind&eval用法
  • 原文地址:https://www.cnblogs.com/zxwy/p/7058615.html
Copyright © 2020-2023  润新知