題目鏈接:https://www.nowcoder.com/questionTerminal/4060ac7e3e404ad1a894ef3e17650423
題目描述
請實現一個函數,將一個字符串中的每個空格替換成“%20”。例如,當字符串爲We Are Happy.則經過替換之後的字符串爲We%20Are%20Happy。
第一次編輯代碼:
public class Solution {
public String replaceSpace(StringBuffer str) {
boolean flag = true;
while(flag){
flag = false;
int blank = str.indexOf(" ");
if(blank != -1){
str.replace(blank,blank,"%20");
flag = true;
}
}
return str.toString();
}
}
提交結果
運行超時:您的程序未能在規定時間內運行結束,請檢查是否循環有錯或算法複雜度過大。
反思
使用StringBuffer的方法運行時間過長。
第二次編輯代碼:
public class Solution {
public String replaceSpace(StringBuffer str) {
char[] str1 = str.toString().toCharArray();
char[] str2 = new char[50];
int i,j = 0;
for(i=0;i<str.length();i++){
if(str1[i] == ' '){
str2[j] = '%';
str2[j+1] = '2';
str2[j+2] = '0';
j += 3;
}else{
str2[j] = str1[i];
j++;
}
}
str2[j] = '\0';
return new String(str2);
}
}
提交結果
答案錯誤:您提交的程序沒有通過所有的測試用例
你的輸出爲:
"hello%20world
反思
百思不得其解,爲什麼字符串貌似缺了結尾標誌,決定看一手答案。
看完別人的提交,人傻了,String類自帶的方法就可以簡單解決問題,查找API知道了可以使用replace()方法,當然這裏暫不涉及優化。
第三次編輯代碼:
public class Solution {
public String replaceSpace(StringBuffer str) {
return str.toString().replace(" ","%20");
}
}