Trova il numero mancante in sequenza nella stringa [chiuso]

-1

Ho una stringa che contiene numeri in sequenza. Non ci sono delimitatori tra i numeri. Devo trovare il numero mancante in quella sequenza. Ad esempio:

176517661768 is missing the number: 1767
8632456863245786324598632460 is missing the number: 8632458

Non ho idea di come iniziare. Come puoi vedere, non conosco nemmeno la lunghezza del numero. Inoltre, sono per lo più programmatore C, quindi non ho molto aiuto dalle funzioni integrate. Tuttavia, sto cercando un buon algoritmo che io possa implementare. Tuttavia, codice / pseudo-codice è molto apprezzato.

    
posta Neo 16.02.2016 - 17:37
fonte

1 risposta

6

Il problema è interamente quello di formare un'ipotesi e testarla.

Quindi abbiamo 176517661768 . Ok. La prima ipotesi è che il primo numero sia lungo una cifra. Quello sarebbe un 1 . Ciò significa che mi aspetto che il prossimo numero sia un 2 o 3 (se il buco è un 2 ). Lo verifichiamo.

  • 1 - capito.
  • 7 - non un 2 o un 3.

Ok, lascia perdere.

La seconda ipotesi è che il primo numero sia lungo due cifre. Quello sarebbe un 17 . Ciò significa che mi aspetto che il numero sia 18 o 19 .

  • 17 - capito
  • 65 - non 18 o 19.

Proviamo di nuovo. Potrebbe essere tre cifre a lungo. Ciò significherebbe 176 .

  • 176 - capito
  • 517 - non un 177 o 178.

Proviamo ancora questo. Potrebbe essere quattro cifre a lungo.

  • 1765 - capito
  • 1766 - sempre corrispondente all'ipotesi
  • 1768 - sempre corrispondente all'ipotesi (e abbiamo un buco, mettilo da parte) ..
  • ...

Capire come eseguire le sottostringhe appropriate o l'elaborazione del flusso è lasciato come esercizio al lettore per la lingua scelta. Questo probabilmente ricadrà nell'approccio in cui stai scrivendo un tipo di macchina a stati in cui stai solo andando avanti e testando per due possibili condizioni: il prossimo valore o il valore successivo più uno (e una volta trovata una situazione in cui hai accettato valore successivo più uno, tutti gli stati futuri hanno solo un test di accettazione - quello del valore successivo)

    
risposta data 16.02.2016 - 17:57
fonte

Leggi altre domande sui tag