替换空格
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
在原数组上替换,不额外申请数组,这样从后往前替换比较好,从前往后替换则需要经常移动后面的数组。
1  | //length为规定字符串输出的最大长度,固定为一个常数  | 
从尾到头打印链表
如果不允许改变链表的结构,
方法一
这里申请了一个vector,不断的头插,(即为栈)1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21class Solution {
public:
    vector<int> printListFromTailToHead(struct ListNode* head) {
          vector<int> v;
    ListNode*p=head;
    if(p==NULL)
    {
        return v;
    }
    else
    {
    	while(p!=NULL)
        {
        	v.insert(v.begin(),p->val);
            p=p->next;
        }
        
    }
       return v;
    }
};
方法二 递归1
2
3
4
5
6
7
8
9
10
11void printReverseNode(ListNode * head)
{
	if(head!=NULL)
	{
		if(head->next!=NULL)
		{
			printReverseNode(head->next);
		}
		printf("%d",head->val);	
	}
}
如果可以改变链表的结构,则直接把链表逆序1
2
3
4
5
6
7
8
9
10
11
12
13
14ListNode * reverseList (ListNode* head)
{
	ListNode *pNode=head;
	ListNode *pre=NULL;
	ListNode *pNext=NULL;
	while(p->next!=NULL)
	{
		pNext=pNode->next;
		pNode->next=pre;
		pre=pNode;
		pNode=pNext;
	}
	return pNode;
}