Quindi ho programmato per alcuni anni principalmente come dilettante / studente, e sono consapevole del fatto che l'utilizzo di eccezioni è generalmente disapprovato quando usato come una mancanza di considerazione per l'input e solo un catch-all (es. programmazione pigra). Ma ho una domanda specifica riguardante una domanda dell'intervista di programmazione:
Dato un elenco collegato, trova se c'è un ciclo in esso.
La soluzione consiste nell'usare due puntatori, iterare il primo di 1 e il secondo di 2 posizioni, e se mai si incontrano c'è un ciclo. Se ottieni un puntatore nullo, non esiste un ciclo.
Nel contesto di un'intervista, se ho scritto il seguente codice dicendo qualcosa del tipo:
"Sono consapevole che questo potrebbe non essere il miglior uso delle eccezioni, ma dal momento che NullPointerException è specificatamente la condizione di uscita, sembra il modo migliore per sfruttare il linguaggio per ottenere ciò che voglio in modo rapido In questo modo sto sfruttando le eccezioni per verificare l'input nullo, nonché per la condizione di uscita di raggiungere la fine dell'elenco. "
Questo sarebbe accettabile? O sarebbe considerato pigro?
boolean hasCycle(Node head) {
try{
Node start = head;
Node runner = head;
do{
start = start.next;
runner = runner.next.next;
if(start == runner) {
return true;
}
}while(runner != start) ;
}
catch(NullPointerException ex){
return false;
}
return false;
}