【Java】劍指Offer_編程題_替換空格

題目鏈接: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");
    }
}
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章