替换空格
请实现一个函数,把字符串 s
中的每个空格替换成"%20"。
示例 1:
输入:s = "We are happy." 输出:"We%20are%20happy."
想法1:用一个新的空间,来记录结果,而不是在原来的数组基础之上改变:
class Solution { public: string replaceSpace(string s) { string sp;//用新的数组来记录结果
for (int i = 0; i < s.size(); i++) {
if (s[i] != ' ') {
sp.push_back(s[i]); } else { sp.push_back('%'); sp.push_back('2'); sp.push_back('0'); } } return sp; } };
想法2:用双指针的方法来改变数组的元素:(因为长度变长,所以可能需要尝试先扩容,再进行从后面开始往前面循环,尝试之后发现果然是这样的)
class Solution { public: string replaceSpace(string s) { int flag = 0;//记录s内部总共有几个空格 int size = s.size(); for (int i = 0; i < size; i++) { if (s[i] == ' ') { flag++; } } s.resize(size+flag*2);//扩容s数组 int fast = size - 1;//注意两个指针刚开始的位置,因为是从后开始循环的 int slow = s.size() - 1; for (; fast >= 0; fast--) { if (s[fast] != ' ') { s[slow] = s[fast]; slow--; } else {//放心操作,因为长度大小已经得到控制 s[slow--] = '0'; s[slow--] = '2'; s[slow--] = '%'; } } return s; } };
【推荐】博客园的心动:当一群程序员决定开源共建一个真诚相亲平台
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】Flutter适配HarmonyOS 5知识地图,实战解析+高频避坑指南
【推荐】开源 Linux 服务器运维管理面板 1Panel V2 版本正式发布
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步