题目链接
题目描述
将一个字符串中的空格替换成 “%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();
}
}