題目描述:
· 請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy。
解題思路:
- 遍歷字符串統(tǒng)計(jì)出字符串中空格的總數(shù),并計(jì)算替換后字符串的總長度。
- 從后往前復(fù)制(非空格)替換(遇到空格)。準(zhǔn)備p1、p2兩個(gè)指針。p1指向原始字符串的末尾,而p2指向替換之后的字符串的末尾。接下來向前移動(dòng)指針p1,逐個(gè)把它指向的字符復(fù)制到p2指向的位置,直到空格全部處理完成。
[劍指offer][02]替換空格
參考代碼
class Solution {
public:
void replaceSpace(char *str,int length) {
//邊界檢查
if(!length){
return;
}
//計(jì)數(shù)
int count=0;
int len=0;
for(int i=0; str[i]!='\0'; i++){
if(str[i]==' ')
count++;
len++;
}
//沒有空格直接返回
if(!count){
return;
}
//長度越界檢查
int newLen=len+2*count;
if(newLen+1>length)
return;
char *p1,*p2;
p1=str+len-1;
p2=str+newLen;
*p2 = '\0';
p2--;
while(count){
if(*p1 !=' '){
*p2-- = *p1;
}
else{
*p2-- ='0';
*p2-- ='2';
*p2-- ='%';
count--;
}
p1--;
}
}
};