替换空格
C++代码:
class Solution {
public:
void replaceSpace(char *str,int length) {
if (str == NULL || length <= 0) {
return;
}
int oriLength = 1, blankCount = 0;
// 获取原来的实际长度(包括‘\0’)和空格数量
for (int i = 0; str[i] != '\0'; i++) {
if (str[i] == ' ') {
blankCount++;
}
oriLength++;
}
int newLength = oriLength + blankCount * 2;
// 如果要求的新长度>可以分配的总长度
if (newLength > length) {
return;
}
// 从后向前遍历,依次替换空格
// 从后往前,每个空格后面的字符只需要移动1次。
// 从前往后,当遇到第一个空格时,要移动第一个空格后所有的字符2次;
// 当遇到第2个空格时,要移动第二个空格后所有的字符2次;以此类推。所以总的移动次数会更多。
for (int i = oriLength - 1, j = newLength - 1; i >= 0; i--) {
if (str[i] == ' ') {
str[j--] = '0';
str[j--] = '2';
str[j--] = '%';
} else {
str[j--] = str[i];
}
}
}
};
浙公网安备 33010602011771号