我正在準備面試,我一直在尋找練習編碼問題,並且有幾個關於代碼解決方案的問題。字符數組如何工作?
問題是:編寫一個方法用'%20'替換字符串中的所有空格。您可以假定該字符串在末尾具有足夠的空間來容納額外的字符,並且您可以獲得字符串的實際長度。 例子:
輸入: 「我的狗」,6
輸出: 「我的%20dog」
解決方案:
void replaceSpaces(char[]str, int length){
int spaceCount = 0, newLength, i;
for(i = 0; i <length; i++){
if(str[i] == ' '){
spaceCount++;
}
}
newLength = length + spaceCount * 2;
str[newLength]= '/0';
for(i= length -1; i>=0; i--){
if(str[i] == ' '){
str[newLength - 1] = '0';
str[newLength - 2] = '2';
str[newLength - 3] = '%';
newLength = newLength - 3;
}else{
str[newLength -1] = str[i];
newLength = newLength - 1;
}
}
}
與此代碼第一個問題是如何將我實現這個在主課堂上?我想更好地瞭解char數組的工作方式,看看我是否可以測試這些代碼。
其次,這條線是什麼意思,它的目的是什麼?我試圖尋找了一下「/ 0」是指在Java中,但查不出:
str[newLength] = '/0';
第三,爲什麼我們需要在我們添加空間的代碼下半年從滿足newLength減去3 %20?這是線下:
newLength = newLength - 3;
爲什麼你不使用'String'而不是'char []'? –
這看起來像試圖從C/C++複製的代碼,尤其是考慮到正在使用錯誤的空終止符(它是'\ 0',但它在Java代碼中沒有位置)的事實。 – Gimby
'String newString = new String(str).replaceAll(「」,「%20」);'? – 3kings