URL化。编写一种方法,将字符串中的空格全部替换为%20。假定该字符串尾部有足够的空间存放新增字符,并且知道字符串的“真实”长度。(注:用Java实现的话,请使用字符数组实现,以便直接在数组上操作。)
示例1:
输入:“Mr John Smith “, 13
输出:“Mr%20John%20Smith”
示例2:
输入:” “, 5
输出:”%20%20%20%20%20”
提示:
字符串长度在[0, 500000]范围内。
题意呢就是把空格改成%20,至于最后的空格是留出来的,并且知道最终的长度(%20算一个),这样题目就很简单了
代码如下:
class Solution {
public String replaceSpaces(String S, int length) {
String rs = "";
for(int i = 0;i < length;i++){
if(S.charAt(i) == ' '){
rs += "%20";
}else{
rs += S.charAt(i);
}
}
return rs;
}
}
但是呢他说java要用数组去实现,那就再敲一个数组的代码,其实我提交的上述的代码,但是呢,超时了,不懂为啥下面要遍历2遍的代码没超时这个却超时了。
代码如下:
public String replaceSpaces(String S, int length) {
char[] s = S.toCharArray();
int spaces = 0;
for(int i = 0; i < length; i++){
if(s[i] == ' '){
spaces++;
}
}
int index = 0;
char[] arr = new char[spaces * 2 + length];
for(int i = 0; i < length; i++){
if(s[i] == ' '){
arr[index++] = '%';
arr[index++] = '2';
arr[index++] = '0';
}else{
arr[index++] = s[i];
}
}
return new String(arr);
}
代码是别人的,觉得他的还是挺干净的,我敲下去最多也就是这个水平,就懒的敲了,但是这个却可以通过为啥呢。