目录
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;
}