Con la riga:
char[] vch = str.toCharArray ();
ottengo chiaramente un array di char con i caratteri della stringa, fin qui è semplice.
Con la riga:
vch[j++] = vch[i];
faccio un'altra cosa: in pratica riscrivo sull'array saltando i caratteri da rifiutare. Ci sono 2 indici: 'i' e 'j'. Il primo va sempre avanti in modo lineare (c'è il i++ nel for, quindi ad ogni ciclo si incrementa). il secondo si incrementa solamente man mano che riscrivo caratteri "buoni" nell'array. Il risultato finale è che i caratteri "buoni" vengono "compattati" all'inizio dell'array.
Se non ti piace, usa uno StringBuffer/StringBuilder in cui aggiungi al fondo i caratteri validi.

Rispondi quotando