1. 程式人生 > >面試題4:替換空格

面試題4:替換空格

題目:實現一個函式,把字串中的每個空格都替換成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;
}

執行結果:

在這裡插入圖片描述