zoukankan      html  css  js  c++  java
  • 有意思的字符串反转(JavaScript)

    有意思的字符串反转

    如果问你,实现对一串字符串进行反转操作,你的第一反应的方法是?

    第一个我想到的是,利用Array.Reverse来实现:

    var test = 'Skylor.min';
    test.split('').reverse().join('');

    但是,一般被问这个问题,都是不能用这个函数的。。。。于是,我想到了堆栈来处理: 

    1 var stack = [];
    2 var result = [];
    3 for(var  i = 0; i < str.length; i ++ ){
    4   stack.push(str[i]);
    5 }
    6 for(var j = 0; j < str.length; j ++) {
    7   result[j] = stack.pop();
    8 }
    9 console.log(result.join(''))

     恩,这样也能解决问题,虽然两次循环和栈的开销无疑使这种方法成为开销很大的方法。但使用栈这个数据结构的想法还是非常有价值的。

    但是一般这类反转都是可以用递归来写的:

    1 function myReverse(str){
    2   
    3   if(str.length === 1) {
    4     return str;
    5   } else {
    6     
    7     return  myReverse(str.substring(1)) + str[0];
    8   }  
    9 }

     其实,字符串反转还可以这样简单的来用另一个字符串循环赋值:

    1 function myReverse(str) {
    2   
    3   var temp = [];
    4   for(var i = 0; i < str.length; i ++) {
    5     temp[i] = str[str.length - i -1];
    6   }
    7   return temp.join('');
    8 
    9 }

    简单的问题,不一样的方法,不一样的思想。

  • 相关阅读:
    session
    .net core 入坑经验
    .net core 入坑经验
    .net core 入坑经验
    一段刚刚出炉的CSV文件转换为DataTable对象的代码
    Github的一般用法
    SQLite简单使用记录
    一次SQLServer数据库宕机问题
    B样条基函数(cubic spline basis)
    matlab使用
  • 原文地址:https://www.cnblogs.com/skylor/p/4721708.html
Copyright © 2011-2022 走看看