剑指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(); 
    }
}
原文地址:https://www.cnblogs.com/liuwanqiu/p/8491466.html