C#: Finde die Anzahl mehrfach vorhandenen alphanumerischer Zeichen oder Zahlen in einem String

Vorgaben

  • Gross- Kleinschreibung spielt keine Rolle
  • String enthält nur alphanumerische Zeichen oder Zahlen

Beispiele

StringRückgabe der Funktion
“abcde”0
“aacDeii”2
“Aaahjkl”1

Meine erste Lösung

public static int DuplicateCount(string str)
{
    var charAmounts = str.GroupBy(x => x.ToString(),
        StringComparer.CurrentCultureIgnoreCase)
        .Select(x => new { Character = x.Key, Count = x.Count() });

    return charAmounts.Where(x => x.Count > 1).Count();
}

Meine zweite verbesserte Lösung

public static int DuplicateCount(string str)
{
    return str.ToLower().GroupBy(x => x)
        .Where(y => y.Count() > 1).Count();
}

Unit-Test

[Test]
public void DuplicateCountTest()
{
    Assert.AreEqual(0, Snippets.DuplicateCount(""));
    Assert.AreEqual(0, Snippets.DuplicateCount("abcde"));
    Assert.AreEqual(2, Snippets.DuplicateCount("abbcdde"));
    Assert.AreEqual(2, Snippets.DuplicateCount("aabBcde"));
    Assert.AreEqual(2, Snippets.DuplicateCount("Schifffahrt"));
    Assert.AreEqual(3, Snippets.DuplicateCount("Affenbrotbaum"));
    Assert.AreEqual(1, Snippets.DuplicateCount("Nuss"));
    Assert.AreEqual(1, Snippets.DuplicateCount("2mal2"));
    Assert.AreEqual(2, Snippets.DuplicateCount("333Fragen22"));
}

Schreibe einen Kommentar

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