字符串的处理操作

题目要求:

    将字符串中的空格替换成‘%20’【空格ASCII码是32,转换成16进制20】;

    分析:    假设存在字符串char * string="i am php",则替换之后成为“i%20am%20php”;

    函数实现:

       

 //替换字符串中的空格为新的字符串
        void replaceBlank(char string[],int length){ 
//判断输入的字符串是否为空
if(string==NULL || length==0){
	return ;
}
int i=0;
int originalLength=0;
//字符串中字符的个数,其中包括'\0'
int count=0;  //统计字符串中出现的空格
while(string[i]!='\0'){
	++originalLength;
	++i;
	if(string[i]==' '){
		++count;
	}
}
//计算替换后字符的长度
int newLength=originalLength+count * 2;
if(newLength>length){
	return ;
}
int indexOfOriginal=originalLength;
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--;
}
}




        

        总结:@1 若从左到右进行替换,则每插入一个字符,原字符右边的所有字符都向右移动一次;若从右向做进行插入的话,会减少移动的次数。

你可能感兴趣的:(字符串操作,剑指offer)