算法营day2

牛客 替换空格

题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
思路:
用双指针的办法,一个指针指向原来字符尾’\0’处,另一个指向替换完成之后新的字符尾处,
代码:

class Solution {
    
    
public:
	void replaceSpace(char *str,int length) {
    
    
        if(str == nullptr || length <=0)
            return;
        int originLen=0;//没有初始化,你怎么计数呢???
        int numofBlank=0;
        for(int i =0;str[i]!='\0';++i){
    
    //刚开始的时候下标就是0,当前字符不为'\0'向后移动,那么跳出循环的时候originLen正好是'\0'的下标
            ++originLen;
            if(str[i] == ' ')//跟' '字符比较
                ++numofBlank;
        }
        int newLen = originLen + numofBlank*2;
        if(newLen>length) return;
        int p1=originLen;//原始字符串的长度,str[p1]是'\0'
        int p2=newLen;
        while(p1>=0 && p2>p1){
    
    
            if(str[p1] == ' '){
    
    
                str[p2--] = '0';
                str[p2--] = '2';
                str[p2--] = '%';
               
            }
            else{
    
    
                str[p2--] =str[p1];
            }
            --p1;//不论是不是空格,p1都要向前移动,遍历字符串
        }
	}
};

牛客 反转链表

输入一个链表,按链表从尾到头的顺序返回一个ArrayList。
链表常见题型

牛客 重构二叉树(前序+中序)

常见的二叉树题目

猜你喜欢

转载自blog.csdn.net/qq_35353824/article/details/107490974
今日推荐