Java用の答え、分析、およびノート「安全プランを証明」
インタビューの質問4を「オファーは安全性を証明するために」:スペースを置き換える
十分に長い文字の配列、ここでいくつかの文字、「%」「2」「「に置き換え(空白)」0」元の文字セグメントからの3つの文字のため\ 0「末端
メソッド帳:この質問ならば、配列をスキャンする最初から最後まで交換し、アレイは、携帯に送られます。あなたは仕上げ加工に開始から要素を移動しない場合は何の考えではないようです。タイトルを参照するには十分に長い配列を、我々は考える必要が戻ってからの処理方法。我々は、最初の文字にセグメント処理は、新しい文字セグメントが最初の文字を処理するときに、単に元の文字を推測することができ、交換後の配列の長さを計算します。
public void replace(char[] c){
if(c == null || c.length == 0)return;
int originTail = -1;
int newTail = -1;
int i = 0;
while(c[i] != '\0'){
originTail++;
if(c[i] == ' '){
newTail += 3;
}else{
newTail ++;
}
i++;
}
c[newTail+1] = '\0';
while(originTail >= 0){
if(c[originTail] != ' '){
c[newTail] = c[originTail];
newTail--;
}else{
c[newTail--] = '0';
c[newTail--] = '2';
c[newTail--] = '%';
}
originTail--;
}
}