題目描述
請(qǐng)實(shí)現(xiàn)一個(gè)函數(shù),將一個(gè)字符串中的空格替換成“%20”。例如,當(dāng)字符串為We Are Happy.則經(jīng)過替換之后的字符串為We%20Are%20Happy。
(輸入中l(wèi)ength為最大長(zhǎng)度)
解題思路:
首先計(jì)算str現(xiàn)有長(zhǎng)度和修改后的長(zhǎng)度,然后利用兩個(gè)指針,從后往前賦值。
class Solution {
public:
void replaceSpace(char *str,int length) {
if( str == NULL )
return;
int originalLen = 0; //原有長(zhǎng)度
int blankNum = 0; //空格個(gè)數(shù)
for( int i=0;str[i]!='\0';i++ )
{
originalLen++;
if( str[i] == ' ' )
blankNum++;
}
int len = originalLen + blankNum * 2; //修改后長(zhǎng)度
if( len+1 > length ) //判斷不能超過最大長(zhǎng)度
return;
char *p1 = str + originalLen; //修改前str的末尾,指向'\0'
char *p2 = str + len; //修改后str的末尾,指向'\0'
while( p2 > p1 ) //從后往前賦值
{
if( *p1 == ' ' )
{
*p2 = '0';
p2--;
*p2 = '2';
p2--;
*p2 = '%';
p2--;
}
else
{
*p2 = *p1;
p2--;
}
p1--;
}
return;
}
};