题目链接:替换空格
请实现一个函数,把字符串中的每个空格替换成"%20"。
数据范围
0≤
输入字符串的长度 ≤1000
。
注意输出字符串的长度可能大于 1000
。
样例
输入:"We are happy."
输出:"We%20are%20happy."
class Solution {
public:
string replaceSpaces(string &str) {
string res;
for (auto x : str)
if (x == ' ')
res += "%20";
else res += x;
return res;
}
};
整体思路
遍历数组,遇到空格就替换
题目链接:从尾到头打印链表
输入一个链表的头结点,按照 从尾到头 的顺序返回节点的值。
返回的结果用数组存储。
数据范围
0≤
链表长度 ≤1000
。
样例
输入:[2, 3, 5]
返回:[5, 3, 2]
/**
* Definition for singly-linked list.
* struct ListNode {
* int val;
* ListNode *next;
* ListNode(int x) : val(x), next(NULL) {}
* };
*/
class Solution {
public:
vector<int> printListReversingly(ListNode* head) {
if (!head) return {};
vector<int> res;
while (head) res.push_back(head->val), head = head->next;
reverse(res.begin(), res.end());
return res;
}
};
整体思路
关于倒序,我们应该想到两个东西,头插法和栈
则本题可以:
1. 创建新链表,使用头插法,构造新链表,然后输出即可
2. 对于链表中的元素,依次入栈,然后再出栈即可
3. 取出链表的元素,放入数组中,然后逆序数组
这里采用思路三