牛客網_劍指offer_第二題替換空格_C++/C
阿新 • • 發佈:2019-02-15
替換空格replaceSpace C++/C版本
- 題目描述
請實現一個函式,將一個字串中的空格替換成“%20”。例如,當字串為We Are Happy.則經過替換之後的字串為We%20Are%20Happy。
思路分析
第1步:檢測出空格的個數(可以考慮下是從前往後檢測,還是從後往前檢測哪個好)
第2步:將空格替換為%20,注意原先是有個空格,新字串後只是增加了2個空格
程式碼塊
#include<bits/stdc++.h>
using namespace std;
void replaceSpace(char *str,int length) {
//檢測字串是不是空字串或者字元長度為0
if(str==NULL||length<=0)//length==0--->length<=0
return;
//統計字串中的空字元的個數
int blanknum=0;//空格字元數量
int newlen=0;//定義新的字串長度
int oldlen=0;
for(int i=0;str[i]!='\0';i++)
{
oldlen++;
if(str[i]==' ')
blanknum++;
}
newlen=oldlen+2*blanknum;//新的字串長度
//因為原先有個空格,所以只需要乘以2,不是3
//替換空格字元
//需要判斷新的字串長度是否大於oldlen
if(newlen>length)//length是給的陣列最大長度
return;
for(int i=oldlen;i>=0;i--)
{
//小於的話進行替換
if(str[i]!=' ')
str[newlen--]=str[i];
else
{
str[newlen--]='0';
str[newlen--]='2' ;
str[newlen--]='%';
}
}
}
int main()
{
char str[50]="Welcome to my home!";
replaceSpace(str,50);
printf("%s\n",str);
return 0;
}