面试题4:替换空格
来源:互联网 发布:获取当前系统时间 java 编辑:程序博客网 时间:2024/06/07 00:39
题目:请实现一个函数,把字符串中的每个空格替换成 “%20”。
例如输入“We are happy.”,则输出“We%20are%20happy.”
要求:在原来的字符串上做替换,并保证输入的字符串后面有足够的空余内存,常数空间复杂度。
#include <iostream>using namespace std;void ReplaceBlank(char string[], int maxLength){if (string == NULL || maxLength <= 0)return;int numOfBlank = 0;int originalLength = strlen(string);for (int i = 0; string[i] != '\0'; ++i){if (string[i] == ' ')++numOfBlank;}int newLength = originalLength + 2 * numOfBlank;if (newLength > maxLength){cout << "容量不足!" << endl;return;}int indexOfOriginal = originalLength - 1;int indexOfNew = newLength - 1;while (indexOfOriginal >= 0 && indexOfNew > indexOfOriginal){if (string[indexOfOriginal] != ' ')string[indexOfNew--] = string[indexOfOriginal];else{string[indexOfNew--] = '0';string[indexOfNew--] = '2';string[indexOfNew--] = '%';}--indexOfOriginal;}}void Test(char* testName, char string[], int length, char expected[]){if (testName != NULL)printf("%s begins: ", testName);ReplaceBlank(string, length);if (expected == NULL && string == NULL)printf("passed.\n");else if (expected == NULL && string != NULL)printf("failed.\n");else if (strcmp(string, expected) == 0)printf("passed.\n");elseprintf("failed.\n");}// 空格在句子中间void Test1(){const int length = 100;char string[length] = "hello world";Test("Test1", string, length, "hello%20world");}// 空格在句子开头void Test2(){const int length = 100;char string[length] = " helloworld";Test("Test2", string, length, "%20helloworld");}// 空格在句子末尾void Test3(){const int length = 100;char string[length] = "helloworld ";Test("Test3", string, length, "helloworld%20");}// 连续有两个空格void Test4(){const int length = 100;char string[length] = "hello world";Test("Test4", string, length, "hello%20%20world");}// 传入NULLvoid Test5(){Test("Test5", NULL, 0, NULL);}// 传入内容为空的字符串void Test6(){const int length = 100;char string[length] = "";Test("Test6", string, length, "");}//传入内容为一个空格的字符串void Test7(){const int length = 100;char string[length] = " ";Test("Test7", string, length, "%20");}// 传入的字符串没有空格void Test8(){const int length = 100;char string[length] = "helloworld";Test("Test8", string, length, "helloworld");}// 传入的字符串全是空格void Test9(){const int length = 100;char string[length] = " ";Test("Test9", string, length, "%20%20%20");}int main(){Test1();Test2();Test3();Test4();Test5();Test6();Test7();Test8();Test9();/*char string[100] = "hello world";ReplaceBlank(string,100);cout << string << endl;*/return 0;}
0 0
- 面试题4:替换空格
- 面试题4 替换空格
- 面试题4:空格替换
- 面试题4-替换空格
- 面试题4 替换空格
- 面试题4:替换空格
- 面试题4 替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4-替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- 面试题4:替换空格
- Servlet之详解
- org.apache.poi.POIXMLException: java.lang.reflect.InvocationTargetException异常
- C语言学习心得一:__stdcall、__cdcel和__fastcall三者的区别
- 模板方法
- OC代码中使用Swift文件的实践
- 面试题4:替换空格
- 欢迎使用CSDN-markdown编辑器
- hdu2055 两个ac代码和一个无法ac的代码
- 九度OJ题目1198:a+b
- H.264中的NAL单元类型 nal_unit_type
- 题目1176:树查找 九度OJ
- nyoj 82 迷宫寻宝(一)BFS
- 等价二叉树
- POJ-2010-优先队列