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
Du musst angemeldet sein, um einen Kommentar abzugeben.
Dies ist etwas einfacher:
Hier ist ein weiterer BESTE Lösung -> stackoverflow.com/questions/1009160/...
InformationsquelleAutor Uthistran Selvaraj
Dort ist eine relativ elegante Lösung, die über einen LIFO-stack.
Frage aber klingt nach Hausaufgabe, also werde ich nur den pseudo-code.
Ich glaube, dass Sie richtig sind. Interessantes Konzept aber.
InformationsquelleAutor mjv
Art von einer polierten version:-
InformationsquelleAutor Sandeep Shankar
verwenden stack in C#
InformationsquelleAutor Ali Bayat
Gibt es einen kleinen bug in deinem code. Aufgrund dieser, der Ausgabe-string angezeigt werden würde, wie
yo are how hi!
angesichts der input-stringhi! how are you
. Es ist abschneiden der letzten Zeichen des letzten Wortes.Ändern:
:
InformationsquelleAutor Sushant
Gut, Sie sagen nicht etwas über die anderen LINQ-extension-Methoden 🙂
InformationsquelleAutor Asad Saeeduddin
InformationsquelleAutor bitbyte
Diese version arbeitet in-place, ohne zwischen-Datenstrukturen. Erstens, es kehrt die Zeichen in jedem Wort. "me too" => "em oot". Dann kehrt die ganze Zeichenfolge: "em oot" => "zu mir".
InformationsquelleAutor Boris Asipov
Wie über eine einfache rekursive Funktion, die prüft, ob ein "" und dann substring entsprechend?
Entweder Art und Weise, Logik,... Jetzt finde den Unterschied und werden Sie sicher, dass Sie mit System.Text.
InformationsquelleAutor Sakhile Vinny Daweti
Eines der am Einfachsten zu Beantworten ist wie Unten angegeben bitte gehen Sie über den
InformationsquelleAutor XORG_99