剑指offer-面试题5-替换空格-字符串

/*
题目:
	请实现一个函数,把字符串中的每个空格替换成'%20'.
	例如输入“We are happy",则输出 ”We%20are%happy"。
*/
/*
结题思路:
	考虑给定数组内存足够,且不能开辟新的数组的情况。
	使用两个指针,从后往前复制。
	注意数组最后一个字符为'\0'。
*/
void replaceBlank(char str[],int length){
	if(str == null || length <= 0){
		return;
	}
	int blankNum = 0;
	int index = 0;
	int originLength = 0;
	while(str[index] !='\0'){
		if(str[index] == ' '){
			blankNum++;
		}
		index++;
		originLength++;
	}
	
	int newLength = originLength + 2 * blankNum;
	if(length < newLength) return;
	int indexOfOrigin = originLength;
	int indexOfNew = newLength;
	while(indexOfOrigin < indexOfNew && indexOfOrigin >= 0){//标准答案加了indexOfOrigin >= 0 ,不明白意义
		if(str[indexOfOrigin] != ' '){
			str[indexOfNew--] = str[indexOfOrigin];
		}else{
			str[indexOfNew--] = '0';
			str[indexOfNew--] = '2';
			str[indexOfNew--] = '%';
		}
		indexOfOrigin--;
	}
	
	
	
	
}

  

猜你喜欢

转载自www.cnblogs.com/buaaZhhx/p/11801882.html