题目链接

牛客网

题目描述

将一个字符串中的空格替换成 “%20”。

Input:
"A B"

Output:
"A%20B"

解题思路

时间复杂度O(N)

public class Solution {
   
    public String replaceSpace(StringBuffer str) {
   
        int p1 = str.length() - 1;
        for (int i = 0; i <= p1; i++)
            if (str.charAt(i) == ' ')
                str.append(" ");
    
        int p2 = str.length() - 1;
        while (p1 >= 0 && p2 > p1) {
    //在完成最后一个空格的替换之后,p1等于p2
            char c = str.charAt(p1--);
            if (c == ' ') {
   
                str.setCharAt(p2--, '0');
                str.setCharAt(p2--, '2');
                str.setCharAt(p2--, '%');
            } else {
   
                str.setCharAt(p2--, c);
            }
        }
        return str.toString();
    }
}

class Solution {
   
    public String replaceSpace(String s) {
   
        int len = s.length(), size = 0;
        char[] cs = new char[len*3];
        for (int i=0; i<s.length(); i++) {
   
            char c = s.charAt(i);
            if (c==' ') {
   
                cs[size++] = '%';
                cs[size++] = '2';
                cs[size++] = '0';
            } else {
   
                cs[size++] = c;
            }
        }
        return new String(cs, 0, size);
    }
}

时间复杂度O(N2)

public class Solution {
   
    public String replaceSpace(StringBuffer str) {
   
    	if (str==null || str.length()==0) return str.toString();
        StringBuilder sb = new StringBuilder();
        for (int i=0;i<str.length();i++) {
   
            if (str.charAt(i) == ' ') sb.append("%20");
            else sb.append(str.charAt(i));
        }
        return sb.toString();
    }
}