Converti lettere in numeri

2

Ho il seguente problema.

Dato A = 1, B = 2, ..., Z = 26

Ho bisogno di un algoritmo che abbia una combinazione di lettere, come l'ordine delle colonne in Excel, mi restituisca il numero /

AA = 27 AB = 28

ABC?

Grazie mille

Questo è il mio algoritmo finora, non mi piace l'interruttore all'interno di for. Qualsiasi aiuto è apprezzato, lo scriverò più avanti in c #

Given A=1, B=2, Z=26. AB=27, ABC?
Variable = ABC
Positions =  Variable.Length -1
Int  result= 0
FOR (i=0; i<= Positions; i++)
{
     Letter=Variable[i];
    Switch(Letter)
    Case A:
        LetterValue=1
     result=+ result+26*(LetterValue)^i
}
    
posta Luis Valencia 08.03.2013 - 17:04
fonte

1 risposta

15

Pensa a una sequenza di lettere come numero di base-26: ogni lettera rappresenta una cifra; il valore di ogni posizione N è 26^N ( N è a base zero). Questo è simile alla conversione dei numeri decimali in valori interi, eccetto che hai le lettere come cifre e 26 invece di dieci come base.

Ora l'algoritmo è chiaro: inizia da sinistra e converti le lettere in numeri. Se vedi più cifre a destra, moltiplica il risultato ottenuto finora per 26, e usalo come numero iniziale per la tua prossima iterazione. Ecco una semplice implementazione in C #:

private static int FromBase26(string s) {
    int res = 0;
    foreach (var c in s) {
        int d = c - 'A' + 1;
        res = 26 * res + d;
    }
    return res;
}
    
risposta data 08.03.2013 - 17:09
fonte

Leggi altre domande sui tag