替换空格
题目:
请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
代码:
1 void replaceSpace(char *str,int length) { 2 if(str == nullptr){ 3 return; 4 } 5 int numOfBlank = 0; 6 int originalLength = 0; 7 for(int i = 0; str[i] != '\0'; i++){ 8 originalLength++; 9 if(str[i] == ' '){ 10 ++numOfBlank; 11 } 12 } 13 int newLength = 2*numOfBlank + originalLength; 14 if(newLength+1 > length){ 15 return; 16 } 17 char* oldStringPtr = str + originalLength; 18 char* newStringPtr = str + newLength; 19 while(oldStringPtr < newStringPtr ){ 20 if(*oldStringPtr == ' '){ 21 *newStringPtr-- = '0'; 22 *newStringPtr-- = '2'; 23 *newStringPtr-- = '%'; 24 25 }else{ 26 *newStringPtr-- = *oldStringPtr; 27 } 28 --oldStringPtr; 29 } 30 31 }
之前一直运行不出结果,总是在报错误,找了半天终于发现问题所在了
if(*oldStringPtr == ' '){ 21 *newStringPtr-- = '0'; 22 *newStringPtr-- = '2'; 23 *newStringPtr-- = '%'; 24 25 }else{ 26 *newStringPtr-- = *oldStringPtr; 27 } 28 --oldStringPtr;
这里的if else 运用有错误。主要是自己逻辑不清,把if和else的情况弄得不是很清楚。这里的else必须有,是用来排除if下的情况
其他时候if else 可以不同时写的情况是,每个代码块都有自己的if 要不要else 无所谓。要是单独的代码块不加上else 就会默认运行。切记切记额