1. 程式人生 > >牛客網_劍指offer_第二題替換空格_C++/C

牛客網_劍指offer_第二題替換空格_C++/C

替換空格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; }