前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【算法】递归实现 reverse(s) ,将字符串倒置

【算法】递归实现 reverse(s) ,将字符串倒置

作者头像
用户9914333
发布2022-07-22 14:04:13
4940
发布2022-07-22 14:04:13
举报
文章被收录于专栏:bug收集

前端的一道面试题,关于:“编写一个递归版本的 reverse(s) 函数,以将字符串s倒置。”

01

分 析

功能:字符串s倒置(倒序)

方法:递归

分析:

若将字符串"hello",实现倒置;先将每一位放到倒数第一位,然后,将第一位放到倒数二,依次交换,直到倒数位和第一位为同一位结束;

如下:

var str = "hello"; //olleh

elloh 第一位,放到倒数第一 交换4

lloeh 第一位,放到倒数第二 交换3

loleh 第一位,放到倒数第三 交换2

olleh 第一位,放到倒数第四 交换1

02

递归实现

分析:

1、方法接受两个参数,arr,len

arr:数组类型,即将字符串将成的数组

len:长度,控制数组交换顺序的次数

2、如果len长于1,小于len-1,则对数组的值进行换行;可实现将数组第一位的值,放到 len 对应的位置上

3、执行完1,2后,len--; 继续调用此方法changeStr(arr,len);

注:函数不需要返回值,因为arr是数组,即为引用类型,它的改变了,原实参也会发生改变;

代码如下:

代码语言:javascript
复制
 /**
     * arr:字符串数组
     * len:长度
     */
 function changeStr(arr,len){
        if(len>1){
            for(var i=0;i<len-1;i++){
                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
            len--;
            changeStr(arr,len);
        }
    }

03

完整Demo

下面写了一个完整Demo,对上面的方法进行测试,测试通过;

代码如下:

代码语言:javascript
复制
<script type="text/javascript">
    var str = "bugshouji.com";
    var re = reverse(str);
    console.log(re);
    function reverse(s){
        var arr = s.split("");
        changeStr(arr,arr.length);
        return arr.join("");
    }
    /**
     * arr:字符串数组
     * len:长度
     **/
    function changeStr(arr,len){
        if(len>1){
            for(var i=0;i<len-1;i++){
                var temp = arr[i];
                arr[i] = arr[i+1];
                arr[i+1] = temp;
            }
            len--;
            changeStr(arr,len);
        }
    }
</script>
本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2021-01-21,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 bug收集 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档