Angella Andrea - Italian Blog

Infinita passione per lo sviluppo software !
posts - 129, comments - 318, trackbacks - 7

My Links

News

MIT OpenCourseWare: I'm invested Wikipedia Affiliate Button


Sto leggendo:

Archives

Post Categories

Siti web realizzati

Siti web tecnici

Algoritmi – Invertire una stringa


Problema:

Data una stringa, calcolare e ritornare una nuova stringa con gli stessi caratteri ma in ordine inverso.

Esempio: ABCDE
Risultato: EDCBA

Input:

Una stringa.

Output:

La stringa di input con i caratteri in ordine inverso.

Il mio ragionamento:

Costruisco un vettore di caratteri lungo quanto la stringa e lo riempio con un semplice ciclo for.

La mia soluzione:

public static string Reverse(string s)
{
    if (s == null) throw new ArgumentNullException("s");
    if (s.Length < 2) return s;

    char[] vc = new char[s.Length];

    int n = s.Length - 1;

    for (int i = 0; i <= n; ++i)
        vc[i] = s[n - i];

    return new String(vc);
}

Print | posted on venerdì 3 settembre 2010 0.39 | Filed Under [ Algoritmica ]

Feedback

Gravatar

# re: Algoritmi – Invertire una stringa

char[] array = value.ToCharArray();
Array.Reverse(array);
return new string(array);
03/09/2010 8.42 | Riccardo
Gravatar

# re: Algoritmi – Invertire una stringa

The Trend Bible to steel tube Alternatives5 Mistaken Ideas You Should Realize About carbon steel pipe
03/09/2010 10.47 | Safety Vest
Gravatar

# re: Algoritmi – Invertire una stringa

Se non ho capito male la serie di post, non credo che il suo scopo sia effettivamente invertire una stringa, ma implementare un algoritmo che lo faccia. Usare un metodo che lo fa al posto suo esula dallo scopo di questo post e dei precedenti.
03/09/2010 12.13 | Matteo Fontana
Gravatar

# re: Algoritmi – Invertire una stringa

@Matteo: Agree :)
@Riccardo: another fast way: string.Join(string.Empty, str.ToCharArray().Reverse());
03/09/2010 12.58 | Matteo Migliore
Gravatar

# re: Algoritmi – Invertire una stringa

Esattamente ! Lo scopo di questa serie e' proprio quello di raffinare il modo in cui progetto algoritmi cercando di usare meno possibile metodi gia' presenti nel framework. Ad ogni modo sono sicuramente interessato a considerare varianti e ragionare su quale e' migliore in termini di cpu e di occupazione di memoria.

In questo caso usare Array.Reverse() non e' valido. A intuito pero' penso che fare ToCharArray() e poi reverse e' piu' lento della mia soluzione in quanto c'e' una scansione in piu' della stringa.

Ecco un link ad un post interessante sullo stesso problema:
weblogs.sqlteam.com/.../9350.aspx
03/09/2010 14.20 | Andrea Angella
Comments have been closed on this topic.

Powered by: