self-day2

48 阅读1分钟

offer-Day02

替换空格

  • 请实现一个函数,将一个字符串s中的每个空格替换成“%20”。 例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
class Solution {
public:
    string replaceSpace(string s) {
        string l="";
        for(int i=0;i<=s.length();i++)
        {
            if(s[i] !=' ')
            l+=s[i];
            else
            l+="%20";
        }
        return l;
    }
};

JZ6 从尾到头打印链表

  • 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
/**
*  struct ListNode {
*        int val;
*        struct ListNode *next;
*        ListNode(int x) :
*              val(x), next(NULL) {
*        }
*  };
*/
class Solution {
public:
    vector<int> printListFromTailToHead(ListNode* head) {
        vector<int> A;
        while(head){
            A.push_back(head->val);
            head =head ->next;
        }
        reverse(A.begin(), A.end());
        return A;
    }
};

重建二叉树

  • 给定节点数为 n 的二叉树的前序遍历和中序遍历结果,请重建出该二叉树并返回它的头结点。
TreeNode* reConstructBinaryTree(vector<int> pre,vector<int> vin) {
         if (pre.size() == 0 || vin.size() == 0) {
            return NULL;
        }
        TreeNode* treeNode = new TreeNode(pre[0]);
        int mid = distance(begin(vin), find(vin.begin(), vin.end(), pre[0]));
        vector<int> left_pre(pre.begin() + 1, pre.begin() + mid + 1);
        vector<int> right_pre(pre.begin() + mid + 1, pre.end());
        vector<int> left_in(vin.begin(), vin.begin() + mid);
        vector<int> right_in(vin.begin() + mid + 1, vin.end());

        treeNode->left = reConstructBinaryTree(left_pre, left_in);
        treeNode->right = reConstructBinaryTree(right_pre, right_in);
        return treeNode;
    }