剑指offer题解合集——Week1day4

剑指offerWeek1

周四:替换空格

题目链接:替换空格

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

数据范围
0≤
 输入字符串的长度 ≤1000
。
注意输出字符串的长度可能大于 1000
。

样例
输入:"We are happy."

输出:"We%20are%20happy."

AC代码

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]

AC代码

/**
 * Definition for singly-linked list.
 * struct ListNode {
 *     int val;
 *     ListNode *next;
 *     ListNode(int x) : val(x), next(NULL) {}
 * };
 */
class Solution {
public:
    vector printListReversingly(ListNode* head) {
        if (!head) return {};
        vector res;
        while (head) res.push_back(head->val), head = head->next;
        reverse(res.begin(), res.end());
        return res;
    }
};

思路:

整体思路

关于倒序,我们应该想到两个东西,头插法和栈
则本题可以:
1. 创建新链表,使用头插法,构造新链表,然后输出即可
2. 对于链表中的元素,依次入栈,然后再出栈即可
3. 取出链表的元素,放入数组中,然后逆序数组

这里采用思路三

你可能感兴趣的:(剑指offer,算法,leetcode)