力扣每日一题——剑指 Offer 05. 替换空格

力扣每日一题——剑指 Offer 05. 替换空格

题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。
在这里插入图片描述

代码注释

void replaceSpace(char s[]){
    
    
	int origLength = 0; //字符串原有长度 
	int i = 0,count = 0;
	while(s[i]!='\0'){
    
    
		origLength++;
		if(s[i]==' ')
			count++;
		i++;			//空格个数 
	}
	int newLength = origLength+count*2;	//替换后的字符串长度
	int indexRear = newLength;
	//初始值指向替换后数组的最后一个元素 ,将每个字符挨个向后移 
	int indexFront = origLength;		
	//初始值指向原数组的最后一个元素,向前寻找空格,遇到了则让indexRear开始填%20 
	while(indexFront>=0 && indexRear!=indexFront){
    
    
		if(s[indexFront]==' '){
    
    
			s[indexRear-- ] = '0';
			s[indexRear-- ] = '2';
			s[indexRear-- ] = '%';
		}else{
    
    
			s[indexRear--] = s[indexFront];
		}
		indexFront--;
	}
}

反思心得

C语言和c++中字符串是可变的,所以可以不用新建字符串,原地修改,但Python和 Java 等语言中,字符串都被设计成“不可变”的类型,需要新建一个字符串遍历添加。

猜你喜欢

转载自blog.csdn.net/Seanfly9105/article/details/114106480