Java代码实现替换空格

剑指Offer-替换空格

题目: 实现一个函数,把字符串中的每一个空格替换为"%20"。 背景: 在URL中存在一些特殊字符,如空格、#等,我们需要把这些特殊字符转换为服务器所能识别的字符,转换的规则为在%后加上ASCII码的两位十六进制的表示。 思路如下

如果每一次发现一个空格就在这个空格的位置插入一个%20的话,考虑不覆盖后边的字符的情况下,就要将后边的进行后移,而如果中间穿插多个空格就会导致部分字符串进行多次后移,这样肯定不是最让人满意的答案。在允许自己分配足够的内存的情况下,因为一个空格替换需要多出来两个长度,则分配一个丁长发的新字符串,再逐次重新写新字符串
public static String replaceSpace(String str){
          
   
        if (null == str || str.isEmpty()) return null;

        int le = str.length();

        char[] chars = str.toCharArray();
        //计算空格的数量
        int spaceCount = 0;
        for (char c : chars) {
          
   
            if (c ==  ){
          
   
                spaceCount ++;
            }
        }
        if (spaceCount == 0) return str;
        int newLe = le+spaceCount*2;
        char[] newChar =  new char[newLe];
        
        int p2 = newLe - 1;

        for (int i = chars.length - 1; i >= 0; i--) {
          
   
            if (  != chars[i]){
          
   
                newChar[p2--] = chars[i];
            }else{
          
   
                newChar[p2--] = 0;
                newChar[p2--] = 2;
                newChar[p2--] = %;
            }
        }
        return new String(newChar);
    }

测试

经验分享 程序员 微信小程序 职场和发展