剑指 Offer 58 - I. 翻转单词顺序

Posted on   AcTourist  阅读(17)  评论(0编辑  收藏  举报

一、题目

 

 二、分析

  1.第一种:利用 split 函数 将字符串以空格切割然后组成数组,在用数组倒序输出,然后用 join 函数 给出答案

  2.第二种:双指针;头尾部都有空格,所以我们要先去除,然后再利用slice()函数组成一起(a.slice(start,end) end不包括当前位置),如何把组成的字母放到前面,我们可以利用 a.unshift()函数方法(可向数组的开头添加一个或更多元素,并返回新的长度。)

来源:JavaScript Array slice() 方法 | 菜鸟教程 (runoob.com)JavaScript unshift() 方法 | 菜鸟教程 (runoob.com)

三、代码

复制代码
/**
 * @param {string} s
 * @return {string}
 */
var reverseWords = function(s) {
    let n = s.split(" ");// 将字符串里的字母 以空格进行分割 组成一个数组
    let tmp = new Array();

    for( let i = n.length-1; i>=0; i--){
//        if( n[i] ){
//            tmp.push(n[i]);
//        }
//          n[i] && tmp.push(n[i]);  上面的if 和 这条语句相同意思
    }

    return tmp.join(" ")//将数组里的元素按着以空格形式分割,组成一个字符串
};
复制代码
复制代码
/**
 * @param {string} s
 * @return {string}
 */
var reverseWords = function(s) {
    let i = 0;
    let len = s.length;
    let j = len-1;
    let tmp = new Array();

//  去头尾空格
    while( s[i] == ' '){
        i++;
    }
    while( s[j] == ' '){
        j--;
    }
//  组成新的字符串
    s = s.slice(i,j+1);

    i = 0;
    j = 0;
    while( j<len ){
        while( j<len && s[j] !=' '){
            j++;
        }

        tmp.unshift(s.slice(i,j));//组成字母,并放到数组第一位

        while( j<len && s[j] ==' '){
            j++;
        }
        i = j;
    }
    return tmp.join(" ");
};
复制代码

 

编辑推荐:
· AI与.NET技术实操系列:基于图像分类模型对图像进行分类
· go语言实现终端里的倒计时
· 如何编写易于单元测试的代码
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
阅读排行:
· 分享一个免费、快速、无限量使用的满血 DeepSeek R1 模型,支持深度思考和联网搜索!
· 25岁的心里话
· 基于 Docker 搭建 FRP 内网穿透开源项目(很简单哒)
· ollama系列01:轻松3步本地部署deepseek,普通电脑可用
· 按钮权限的设计及实现
点击右上角即可分享
微信分享提示