Vorgaben
- Gross- Kleinschreibung spielt keine Rolle
- String enthält nur alphanumerische Zeichen oder Zahlen
Beispiele
String | Rü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"));
}