剑指offer 替换空格
问题描述:
请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。
解题思路:
从字符串的后面开始复制和替换,首先准备两个指针,p1和p2,p1指向原始字符串的末尾,p2指向替换后字符串的末尾,接下来,向前移动指针p1,逐个把它指向的字符复制到p2,碰到一个空格之后,把p1向前移动1格,在p2处插入字符串“20%”,由于“20%”长度为3,同时也要把p2向前移动3格。直到p1=p2,表明所有空格都已经替换完毕。
JAVA算法:
在牛客的《剑指》中java实现要求传入的参数是StringBuffer类型的,那么问题就简单多了。。。。
public class Solution { public String replaceSpace(StringBuffer str) { for(int i=0; i<str.length(); i++) { char temp = str.charAt(k); if(temp == ' ') { str.replace(k, k+1, "%20"); } } return str.toString(); } }