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 
  • 相关阅读:
    dwz 嵌套网页的搜索刷新问题
    dwz 解决remote验证唯一时缓存问题。
    dwz div 局部刷新
    Oracle 递归查询子节点和父节点 函数方法
    关于未能加载文件或程序集“System.Web.Extensions, Version=4.0.0.0, Culture=neutral, PublicKeyToken=31bf3856ad364e35”或它的某一个依赖项的解决办法
    CentOS7搭建vsftp服务器
    Linux下 cmatrix的安装和使用(黑客屏保)
    配置动态web服务(wsgi)
    centos7 搭建discuz 全
    Centos7 更换为阿里源
  • 原文地址:https://www.cnblogs.com/zxwy/p/7058615.html
Copyright © 2011-2022 走看看