剑指 Offer 05. 替换空格

2021年11月25日 阅读数:3
这篇文章主要向大家介绍剑指 Offer 05. 替换空格,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。

题目

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

示例 1:ide

输入: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. 替换空格_空格替换_02