题解 | #替换空格#

替换空格

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--] = '%';
			}
		}
	}
};

全部评论

相关推荐

08-07 11:58
门头沟学院 Java
投实习的时候大厂只有你给面现在攻守易型了是吧挂的这么果断,连面都不给...
迷茫的大四🐶:实习是实习,正职是正职,两码事,实习也就几个月,卡的少,正职可就得狠狠地卡了
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

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