剑指 Offer 05. 替换空格

题目

请实现一个函数,把字符串 s 中的每个空格替换成"%20"。

示例 1:

输入:s = "We are happy."
输出:"We%20are%20happy."

我的答案

class Solution {
    public String replaceSpace(String s) {
       
      StringBuffer str =new StringBuffer();

      //System.out.println(s.charAt(0));

      //System.out.println(s.length());

      for(int i=0;i<=s.length()-1;i++){
          if ((s.charAt(i))==' '){
              str.append("%20");
          }
          else{
              str.append(s.charAt(i));
          }
      }
        //System.out.println(str);

        return str.toString();
    
    }
}

剑指 Offer 05. 替换空格

优秀答案

不利用额外空间,在原地修改

public class Solution {
    public String replaceSpace(StringBuffer str) {
    	int len1 = str.length() - 1;
        for(int i = 0; i <= len1; i++){
            if(str.charAt(i) == ' '){
                str.append("  ");
            }
        }
        int len2 = str.length() - 1;
        while(len2 > len1 && len1 >= 0){
            char c = str.charAt(len1--);
            if(c == ' '){
                str.setCharAt(len2--, '0');
                str.setCharAt(len2--, '2');
                str.setCharAt(len2--, '%');
            }else{
                str.setCharAt(len2--, c);
            }
        }
        return str.toString();
    }
}

剑指 Offer 05. 替换空格

上一篇:面试算法题二


下一篇:Leetcode题目总结[5]最长回文子串