面试题05 替换空格
请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
示例 1:
输入:
s = "We are happy."
输出:
"We%20are%20happy."
限制:
0 <= s 的长度 <= 10000
思路:直接遍历,遇到空格时替换为%20
class Solution {
public:
string replaceSpace(string s) {
string cur = "";
for(int i = 0; i < s.length(); i++){
if(s[i] == ' '){
cur += "%20";
continue;
}
cur += s[i];
}
return cur;
}
};
面试题06.从尾到头打印链表
输入一个链表的头节点,从尾到头反过来返回每个节点的值(用数组返回)。
示例:
输入:
head = [1,3,2]
输出
[2,3,1]
给定 target = 20,返回 false。
限制:
0 <= 链表长度 <= 10000
思路:1 递归输出后面一个节点,再输出当前节点
2.栈依次存入节点值,再依次取出实现逆序
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
//方法1 递归
vector<int> reversePrint(ListNode* head) {
vector<int>res;
helper(head,res);
return res;
}
void helper(ListNode* head,vector<int>& res){
if(head){
if(head->next){
helper(head->next,res);
}
res.push_back(head->val);
}
return ;
}
//方法2 使用栈
vector<int> reversePrint(ListNode* head) {
vector<int>res;
stack<int>sk;
while(head){
sk.push(head->val);
head=head->next;
}
while(!sk.empty()){
res.push_back(sk.top());
sk.pop();
}
return res;
}
};
参考链接:https://leetcode-cn.com/problems/cong-wei-dao-tou-da-yin-lian-biao-lcof/solution/c-liang-chong-fang-fa-zhan-di-gui-by-mei-you-ni-de/