剑指 Offer 05. 替换空格

tech2026-06-07  2

题目描述

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

解题思路

class Solution { public: string replaceSpace(string s) { int length = s.size(); int space_n = 0; for(int i=0; i<length; ++i){ if(s[i]==' ') ++space_n; } s.resize(length+2*space_n); int i = length - 1, j = s.size()-1; while(i>=0&&i!=j){ if(s[i]==' '){ s[j--] = '0'; s[j--] = '2'; s[j--] = '%'; --i; } else s[j--] = s[i--]; } return s; } };

1.先遍历一次字符串,这样就能统计出字符串中空格的总数space_n,并可以由此计算出替换之后的字符串的总长度length+2 * space_n. 2.利用string的resize函数,将string的长度重置为length+2*space_n,新增加的部分都会自动用空字符填充。 3.用两个指针,两个指针都指向resize后的string,但是i指向的是原来单词的末尾字符,j指向的是当前单词的末尾。把i位置的单词复制到j位置处,i和j都向前移动。如果i位置处是空格,j位置处就依次填上0、2、%。 4.注意下标不能越界。如果传入的是空string,那么i的初始值可能为s.size()-1=0,s[i]就会下标越界。

最新回复(0)