【剑指offer】JZ5 替换空格、JZ6 从尾到头打印链表

目录

JZ5 替换空格

思路:

解题步骤:

 JZ6 从尾到头打印链表

思路: 

解题步骤


JZ5 替换空格

描述:

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

例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

思路:

先读题理解题意。题中说字符串中出现空格替换为“%20”,我就想起来StringBuffer,通过遍历字符串,来判断拼接那个字符。

解题步骤:

1.new一个StringBuffer,备用。

2.遍历字符串,判断是否为空格:

(1)是空格:直接将字符append。(2)不是空格:将%20用函数append拼接上去:

题目入口:

点击进入该题

 代码如下:

public String replaceSpace (String s) {
        // write code here
        StringBuffer sb=new StringBuffer();
        for(int i=0;i<s.length();i++) {
            //1.不是空格,直接将字符append
            //2.是空格,append%20
            if(!(s.charAt(i)==' ')) {
                sb.append(s.charAt(i));
            } else {
                sb.append("%20");
            }
        } 
        return sb.toString();
    }

 JZ6 从尾到头打印链表

描述: 

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

如输入{1,2,3}的链表如下图:

返回一个数组为[3,2,1]

思路: 

从尾到头打印链表,因为链表是单向的,故我们到尾节点不能返回过来了。这时,我们想起一个数据结构---栈,它的顺序是先进后出,因此,我们可以让头先进,直至链表进入完,在通过栈,将数据全出栈, 逐个添加到线性表中,最终返回线性表。

解题步骤:

1.new一个栈,new一个链表。

2. 建立一个cur代替头节点走,将数据全放入到栈中。

3.压栈完毕后,再出栈,将出的每个节点的值,放到链表当中。

4.返回链表。

题目入口:

点击进入该题

代码如下:

public class Solution {
    public ArrayList<Integer> printListFromTailToHead(ListNode listNode) {
        Stack<ListNode> stack=new Stack<>();
        ArrayList<Integer> arr=new ArrayList<>();
        ListNode cur=listNode;
        //将节点全入栈
        while(!(cur==null)) {
            stack.push(cur);
            cur=cur.next;
        }
        //出栈,按照出栈顺序将值添加到链表
        while(!stack.empty()) {
            ListNode tmp=stack.pop();
            arr.add(tmp.val);
        }
        return arr;
    }

  • 2
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

爱吃大白菜  

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值