剑指offer 替换空格 java代码

请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则经过替换之后的字符串为We%20Are%20Happy。

思路:
题目提供的Stringbuffer :需要需要先遍历一次用一个整型数组记录所有空格字符的位置,然后逆序替换空格字符为%20即可

如果题目提供char[]:同样先遍历数组寻找空格字符的位置,然后做逆序替换。也可以便利一次char[] 用一个int 变量记录空格字符的数目,然后后逆序替换的时候,先用一个变量i记录最后一个字符的位置,再用变量j记录最后一个字符将要移动到的位置,即char数组长度+替换字符后组要增加的长度,然后通过从后往前依次移动替换空格即可。

public class Solution {
    public static String replaceSpace(StringBuffer str) {
        if (str.equals(null)) {
            return null;
        }
            char[] s = str.toString().toCharArray();
            int[] record = new int[str.length() + 1];
            int j = 0; 
            for(int i = 0;i < s.length;i++)
                if (s[i] == ' ') {
                    j++;
                    record[j] = i;
                }
            for(;j > 0;j--) {
                str.replace(record[j],record[j]+1,"%20");
            }

            return str.toString();
        }
}

猜你喜欢

转载自blog.csdn.net/chance00/article/details/80072884
今日推荐