美文网首页
剑指 offer 笔记 02 | 替换空格

剑指 offer 笔记 02 | 替换空格

作者: ProudLin | 来源:发表于2019-04-13 12:05 被阅读0次

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

public class Solution {
     public String replaceSpace(StringBuffer str) {
        
    }
}

这道题有应用场景的,因为在网络编程中,如果URL参数中含有特殊字符,如:空格、“#”等,可能导致服务器端无法获得正确的参数值。

我们需要将这些特殊符号转换成服务器识别的字符。转换规则是在“%”后面跟上ASCII码的两位十六进制的表。比如:空格的ASCII玛是32,即十六进制的0x20,因此空格被替换成“%20”。

题目很显然要求我们用 StringBuffer 类来解决问题,这道题目有两种解决方案

第一种就是调用 String 自带的方法 replaceAll
public class Solution {
    public String replaceSpace(StringBuffer str) {
        if(str == null){
            return null;
        }
         return str.toString().replaceAll("\\s", "%20");
    }
}

我琢磨着,面试官应该不希望看到第一种写法,想让面试者自己写一个算法,.

第二种就是调用 StringBuffer 类的方法,charAt(int index)
 public String replaceSpace(StringBuffer str) {
        if(str == null){
            return null;
        }
          for(int i = 0; i < str.length(); i++)
              {
                   if(str.charAt(i) == ' ')
                     {
                      str.replace(i, i+1, "%20");
                     }
              }
         
        return str.toString();
    }

第三种 看别人的,利用StringBuffer实现,通过 indexOf(String str,int fromIndex) 方法和 subSequence(int start,int end) 方法联合实现

    public static String replaceSpace(StringBuffer str) {
        if (str == null) {
            return null;
        }
        int fromIndex = 0;
        int index = 0;
        StringBuffer temp = new StringBuffer();
        while (index <= str.length()) {
            index = str.indexOf(" ", fromIndex);
            if (index >= 0) {
                temp.append(str.subSequence(fromIndex, index)).append("%20");
                index = index + 1;
                fromIndex = index;
            } else {
                temp.append(str.substring(fromIndex, str.length()));
                break;
            }
        }
        return temp.toString();
    }

题外话,String 、StringBuffer、StringBuilder 之间的区别,面试题也是常有的哦。

参考文献:
https://blog.csdn.net/believejava/article/details/38682361
https://www.cnblogs.com/gl-developer/p/6435058.html

相关文章

  • 剑指 offer 笔记 02 | 替换空格

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

  • [剑指offer][02]替换空格

    题目描述: · 请实现一个函数,将一个字符串中的空格替换成“%20”。例如,当字符串为We Are Happy.则...

  • 剑指offer:02 替换空格

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

  • 剑指offer 02 替换空格

    题目描述: 思路: 遍历给定的数组元素,如果遇到空格就在把'%20'添加进新数组里,否则就把对应的str[i]添加...

  • 【剑指Offer笔记】:替换空格

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

  • [剑指offer] 替换空格

    本文首发于我的个人博客:尾尾部落 题目描述 请实现一个函数,将一个字符串中的每个空格替换成“%20”。例如,当字符...

  • 剑指offer - 替换空格

    题目 请实现一个函数,把字符串中的每个空格都换成%20。例如:输入"We are happy",则输出“We%20...

  • 《剑指offer》替换空格

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

  • 剑指offer:替换空格

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

  • 剑指offer 替换空格

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

网友评论

      本文标题:剑指 offer 笔记 02 | 替换空格

      本文链接:https://www.haomeiwen.com/subject/ggkqwqtx.html