本文共 1032 字,大约阅读时间需要 3 分钟。
题目描述
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。思路:
首先改函数形参,改为引用传入void replaceSpace(char *&str,int length)
space记录空格数,new一个length+2*space+1的指针数组,再循环str,如果str[j]不是空格,就直接赋值,k++;如果是空格,则将%、2、0赋值给s,同时k+=3。
代码实现:
class Solution { public: void replaceSpace(char *&str,int length) { int space=0; for (int i = 0; i < length; i++){ //循环记录空格的数量 if (str[i] == ' '){ space++; } } char *s = new char[length + space * 2+1];//new新空间,用来存替换空格后的字符串 int k=0; for (int j = 0; j < length; ++j){ if (str[j] != ' '){ //如果str[j]不是空格,就直接赋值,k++ *(s+k) = str[j]; k++; } if (str[j] == ' '){ //如果是空格,则将%、2、0赋值给s,同时k+=3 *(s+k) = '%'; *(s+k + 1) = '2'; *(s+k + 2) = '0'; k += 3; } } *(s + k + 1) = '\0';//C语言风格字符串末尾要是'\0' str = s;//将str指向s }};
结果是:运行时间: <1 ms 占用内存:9536K 状态:答案正确
转载地址:http://yimii.baihongyu.com/