【脚趾Offer 06,07】替换空格 + 从尾到头打印链表

简介: 【脚趾Offer 06,07】替换空格 + 从尾到头打印链表

前言

数据结构与算法属于开发人员的内功,不管前端技术怎么变,框架怎么更新,版本怎么迭代,它终究是不变的内容。 始终记得在参加字节青训营的时候,月影老师说过的一句话,不要问前端学不学算法。计算机学科的每一位都有必要了解算法,有写出高质量代码的潜意识。

(一) 替换空格

1.1 题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = "We are happy."
输出:"We%20are%20happy."

限制:

  • 0 <= s 的长度 <= 10000

1.2 题目解析

方法一: 直接使用字符串的split方法,将字符串转化为数组,再通过join方法合并中间插入%20

var replaceSpace = function(s) {
    return s.split(' ').join('%20')
};

方法二 循环遍历整个字符串,遇到为空值的就插入 %20

var replaceSpace = function(s) {
    let res = ""
    for(const i in s){
        const cur = s[i]
        if(cur==' '){
            res+='%20'
        }else{
            res+=cur
        }
    }
    return res
};

image.png

(二) 从尾到头打印链表

2.1 问题描述

输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。

示例 1:

输入:head = [1,3,2]
输出:[2,3,1]

限制:

  • 0 <= 链表长度 <= 10000

2.2 问题分析

题目要求很简单,我们只需要不断迭代节点,直到链表的末尾,每次节点的值通过unshift插入到数组的第一位。

var reversePrint = function(head) {
    const res = []
    let p = head
    while(p){
        res.unshift(p.val)
        p = p.next
    }
    return res
};

总结

  • 字符串的split方法可以将字符串转化为数组
  • Array.prototype.join 可以将数组转换为字符串

好了,本篇脚趾offer 替换空格 + 从尾到头打印链表到这里就结束了,我是邵小白,一个在前端领域摸爬滚打的大三学生,欢迎👍评论。 借用鱼佬的一句话:不管菜不菜,但是热爱!


相关文章
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 17:合并两个排序的链表
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
【一刷《剑指Offer》】面试题 15:链表中倒数第 k 个结点
|
机器学习/深度学习
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 13:在 O(1) 时间删除链表结点
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
【一刷《剑指Offer》】面试题 5:从尾到头打印链表
【移除链表元素】LeetCode第203题讲解
【移除链表元素】LeetCode第203题讲解
128 0
|
存储 SQL 算法
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
LeetCode力扣第114题:多种算法实现 将二叉树展开为链表
|
存储 SQL 算法
LeetCode 题目 86:分隔链表
LeetCode 题目 86:分隔链表
|
存储 算法 Java
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
【经典算法】Leetcode 141. 环形链表(Java/C/Python3实现含注释说明,Easy)
155 2
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点.
<数据结构>五道LeetCode链表题分析.环形链表,反转链表,合并链表,找中间节点
213 1
[leetcode 链表] 反转链表 vs 链表相交
[leetcode 链表] 反转链表 vs 链表相交
108 1