Reverse Wörter eines Satzes ohne Verwendung von String.Aufgeteilt in C#

Kürzlich bin ich gebeten worden, in einer Diskussion zu schreiben, einen Algorithmus zu implementieren Rückseite der Wörter eines Satzes (Nicht reverse ganzer Satz) ohne Verwendung von string-Operationen wie Split/Replace/Reverse/Join außer ToCharArray und Länge. Das unten ist das, was ich ersinnen konnte in 5min Zeit. Obwohl der Algorithmus funktioniert gut, es scheint bisschen hässlich Stil der Umsetzung. Können einige Körper helfen, mich durch das Polieren der code.

string ReverseWords(string s)
{
    string reverseString = string.Empty;
    string word = string.Empty;

    var chars = s.ToCharArray();
    List<ArrayList> words = new List<ArrayList>();
    ArrayList addedChars = new ArrayList();
    Char[] reversedChars = new Char[chars.Length];
    int i = 1;
    foreach (char c in chars)
    {
        if (c != ' ')
        {
            addedChars.Add(c);
        }
        else
        {
            words.Add(new ArrayList(addedChars));
            addedChars.Clear();
        }
        if (i == s.Length)
        {
            words.Add(new ArrayList(addedChars));
            addedChars.Clear();
        }
        i++;
    }
    foreach (ArrayList a in words)
    {
        for (int counter = a.Count - 1; counter >= 0; counter--)
        {
            reverseString += a[counter];
        }
        if(reverseString.Length < s.Length)
            reverseString += " ";
    }
    return reverseString;
}
Gut, wenn Sie vermeiden Split/Replace/Reverse/Join ... es ist gonna be ein bisschen hässlich ! !
Reverse ist eine Erweiterung Methode der IEnumerable, nicht eine string-Methode.

InformationsquelleAutor gee'K'iran | 2012-12-24

Schreibe einen Kommentar