面試題4:替換空格
阿新 • • 發佈:2018-12-09
題目:實現一個函式,把字串中的每個空格都替換成20%;
例如:輸入:we are happy,則輸出:we%20are%20happy
程式碼如下:
#include<stdio.h> #include<stdlib.h> #include<string.h> void ReplaceBlank(char string[],int length) { if(string==nullptr||length<=0) return ; int orignalLength=0;//原陣列的長度初始化為0 int numberOfBlank=0;//原陣列空格的數量初始化為0 int i=0; { while(string[i]!='\0') { ++orignalLength;//求得原陣列的長度 if(string[i]==' ') ++numberOfBlank;//求得原陣列中空格的數量 ++i; } int newLength=orignalLength+numberOfBlank*2;//替換後陣列的長度 if(newLength>length) return ; int indexOfOriginal=orignalLength;//原陣列的最後一個下標即是原陣列的長度,陣列從0開始,也減少一個\0 int indexOfNew=newLength;//新陣列的最後一個下標即是新陣列的長度 while(indexOfOriginal>=0&&indexOfNew>indexOfOriginal) { if(string[indexOfOriginal]==' ')//判斷若原陣列為空格,則將三個字元替換一個,從後往前替換 { string[indexOfNew--]='0'; string[indexOfNew--]='2'; string[indexOfNew--]='%'; } else//若不是空格,則將舊的賦給新的 { string[indexOfNew--]=string[indexOfOriginal]; } --indexOfOriginal;//舊指標從後往前移動 } } printf("%s\n",string) ; } int main() { char string[20]="we are happy"; ReplaceBlank(string,20); return 0; }