Ho una domanda su un problema di programmazione dal libro Cracking The Code Intervista di Gayl Laakmann McDowell, 5th Edition.Scrivere un metodo per sostituire tutti gli spazi di una stringa con '% 20'
Il problema afferma: Scrivere un metodo per sostituire tutti gli spazi in una stringa con '% 20'. Si supponga che la stringa abbia spazio sufficiente alla fine della stringa per contenere caratteri aggiuntivi e che venga fornita una lunghezza reale di una stringa. Ho usato il codice di libri, l'implementazione della soluzione in Java utilizzando un array di caratteri (considerato il fatto che Java stringhe sono immutabili):
public class Test {
public void replaceSpaces(char[] str, int length) {
int spaceCount = 0, newLength = 0, i = 0;
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;
}
}
System.out.println(str);
}
public static void main(String[] args) {
Test tst = new Test();
char[] ch = {'t', 'h', 'e', ' ', 'd', 'o', 'g', ' ', ' ', ' ', ' ', ' ', ' '};
int length = 6;
tst.replaceSpaces(ch, length);
}
}
L'uscita sto ottenendo dalla chiamata replaceSpaces()
è: l'% 20do che sta tagliando l'ultimo carattere dell'array originale. Mi sono grattato la testa per questo, qualcuno può spiegarmi perché l'algoritmo lo sta facendo?
Qual è il motivo particolare non si sta usando 'String # replace' e' String # replaceAll' metodi? – anubhava
Le stringhe Java non hanno '\ 0'. Inoltre cosa succede ai personaggi che sovrascrivi quando rilevi uno spazio? –
questo è il codice implementato dall'autore dei libri. è sbagliato ?? –