思路:stringbuffer類的使用
總結:在原陣列進行複製,如果涉及n^2的移動,可以設定兩個指標,提前計算複製後的長度,從後到前複製。
public void replaceblank(stringbuffer str)
oriloc--;
int newloc = newlen;
str.setlength(newlen+1); // stringbuffer是變數,直接修改長度
while(oriloc >= 0) else
} system.out.println(str.tostring());
}
拓展題目:有兩個排序的陣列a2和a2,內存在a1的末尾有足夠多的空餘空間容納a2。請實現乙個函式,把a2中的所有數字插入到a1中並且所有的數字是排序的。
思路:和上題一樣,最好的辦法是從尾到頭比較a1和a2中的數字,並把較大的數字複製到a1的合適位置。
public int combinesorted(int nums1, int nums2)
k--;
} return nums1;
}// get the real length of an array.
public int reallength(int nums)
return i;
}
替換空格(劍指offer面試題4)
分析 從頭到尾掃瞄字串,遇到空格就替換,導致後面的字元都要向後移,意味著總時間複雜度為o n 2 更好的辦法,從字串後面遍歷替換。先遍歷所有的空格,每多乙個空格,字串長度加2個,也就是說最後替換後的字串長度為原長度 2 空格數,設定兩個指標,指向原始字串末尾和新字串末尾,依次向前遍歷,原始字串指標遇...
劍指offer 面試題4 替換空格
題目由來 在網路程式設計中,如果url引數中含有特殊字元,如空格 等,可能導致伺服器端無法獲得正常的引數值。我們需要將這些特殊符號轉換成伺服器可以識別的字元。轉換的規則是在 後面跟上ascii碼的兩位十六進製制的表示。比如空格的ascii碼是32,即十六進製制的0x20,因此空格被替代成 20 思路...
劍指offer 面試題4 替換空格
由於我在實現的時候使用的是c 的string,所以從後往前複製和從前往後複製,時間複雜度是一樣的。如果使用char 陣列實現,則從後往前複製更高效。重點是掌握這種反向思維。class solution 初始化新string string res s.size 2 countblank,a 必須將si...