牛客 替换空格
题目描述
请实现一个函数,将一个字符串中的每个空格替换成“%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。
链表常见题型