请实现一个函数,把字符串 s 中的每个空格替换成”%20”。
示例 1:
输入:s = “We are happy.”
输出:”We%20are%20happy.”
class Solution { public String replaceSpace(String s) { StringBuffer stringbuffer = new StringBuffer(); for (int i = 0; i < s.length(); i++) { if (s.charAt(i) == ' ') { stringbuffer.append("%20"); } else { stringbuffer.append(s.charAt(i)); } } return stringbuffer.toString(); } }
|
优化:
1)p1指针指向初始字符串末尾位置;
2)遍历字符串,当遍历到空格时,在尾部填充两个任意字符,使得字符串长度等于替换后的长度;
3)p2指针指向现在遍历填充后的字符串末尾位置;
4)p1,p2指针从后向前遍历,当p1指向空格时,p2指向的位置依次填充’0’ ‘2’ ‘%’,否则就直接填充p1指向的字符值;
5)当p2遇到p1或者遍历结束,退出循环;
class Solution { public String replaceSpace(String s) { StringBuffer stringbuffer = new StringBuffer(s); int p1 = stringbuffer.length() - 1; for (int i = 0; i <= p1; i++) { if (stringbuffer.charAt(i) == ' ') { stringbuffer.append(" "); } } int p2 = stringbuffer.length() - 1; while (p1 >= 0 && p1 < p2) { char tmp = stringbuffer.charAt(p1--); if (tmp != ' ') { stringbuffer.setCharAt(p2--, tmp); } else { stringbuffer.setCharAt(p2--, '0'); stringbuffer.setCharAt(p2--, '2'); stringbuffer.setCharAt(p2--, '%'); } } return stringbuffer.toString(); } }
|