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;
}
};
- 输入一个链表的头节点,按链表从尾到头的顺序返回每个节点的值(用数组返回)。
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;
}