C#: Finde die grösste und kleinste Zahl in einem String

Vorgaben

  • Der String enthält nur gültige Zahlen getrennt durch ein Leerzeichen und mindestens eine Zahl
  • Ausgabe ist ein String mit der grössten und kleinsten Zahl

Beispiele

EingabeAusgabe
“1 2 3 4 5 6 7 8 9 10”“10 1”
“-100 99 45 0 1 354”“354 -100”

Meine erste Lösung

public static string HighAndLow(string numbers)
{
    var sortedList = numbers.Split(" ")
                .Select(x => Convert.ToDecimal(x))
                .OrderByDescending(o => o);
    return $"{sortedList.First()} {sortedList.Last()}";
}

Meine zweite optimierte Lösung

public static string HighAndLow(string numbers)
{
    var sortedList = numbers.Split(" ").Select(int.Parse);
    return $"{sortedList.Max()} {sortedList.Min()}";
}

Unit-Test

public void GetHighAndLowTest()
{
    Assert.AreEqual("354 -100", Snippets.HighAndLow("-100 99 45 0 1 354"));
    Assert.AreEqual("10 1", Snippets.HighAndLow("1 2 3 4 5 6 7 8 9 10"));
    Assert.AreEqual("1 1", Snippets.HighAndLow("1"));
    Assert.AreEqual("3002 -68", Snippets.HighAndLow("-68 3001 3 5 -5 " +
        "42 3002 -1 0 0 -9 4 7 4 -4"));
    Assert.AreEqual("42 -9", Snippets.HighAndLow("8 3 -5 42 -1 0 0 -9 4 " +
        "7 4 -4"));
}

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert