题解 | #替换空格#

替换空格

https://www.nowcoder.com/practice/4060ac7e3e404ad1a894ef3e17650423

先统计空格个数。

  1. 每个空格替换成%20,长度增加2,所以如果空格数为cnt,修改后的总长度为length + 2 * cnt,最大下标为length + 2 * cnt - 1。
  2. 维护两个指针,一个指针j指向修改后字符串,i指向修改前字符串。
  3. 因为是原地修改,且j比i移动得快,所以需要从后往前遍历,防止没有遍历到的数据被覆盖。
class Solution {
public:
	void replaceSpace(char *str,int length) {
		int cnt = 0;
		for (int i = 0; i < length; i++) {
			if (str[i] == ' ') cnt++;
		}
		int j = length + 2 * cnt - 1;
		for (int i = length - 1; i >= 0 && i != j; i--) {
			if (str[i] != ' ') str[j--] = str[i];
			else {
				str[j--] = '0';
				str[j--] = '2';
				str[j--] = '%';
			}
		}
	}
};

全部评论

相关推荐

点赞 评论 收藏
分享
未知的命运:大佬这都找不到我还找啥啊
点赞 评论 收藏
分享
10-16 15:48
算法工程师
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务