C# :: Aufgabe #371
4 Lösungen

Erstes einzelnes Zeichen in einem String
Anfänger - C#
von JKooP
- 06.03.2021 um 18:25 Uhr
Erstelle eine Methode/Funktion, mit der man den Index des ersten einzeln
vorkommenden Zeichens in einem String (Text) ermitteln kann.
Groß- und Kleinschreibung soll nicht unterschieden werden.
Hinweise:
String ist nullbasiert.
Wenn es keine Lösung gibt, soll -1 ausgegeben werden.
Beispiele:
trainyourprogrammer => 0 (t)
lovegenericlists => 1 (o)
lovelollorosso => 2 (v)
otto => -1
Viel Spaß
vorkommenden Zeichens in einem String (Text) ermitteln kann.
Groß- und Kleinschreibung soll nicht unterschieden werden.
Hinweise:
String ist nullbasiert.
Wenn es keine Lösung gibt, soll -1 ausgegeben werden.
Beispiele:
trainyourprogrammer => 0 (t)
lovegenericlists => 1 (o)
lovelollorosso => 2 (v)
otto => -1
Viel Spaß
Lösungen:

using static System.Console; string[] test = new string[] { "trainyourprogrammer", "llovegenericlists", "lovelollorosso", "otto" }; for (var i = 0; i < test.Length; i++) WriteLine($"{test[i]} {test[i].Solution()}"); ReadKey(); static class Extension { public static int Solution(this string ss) { string s = ss.ToUpper(); for (var i = 0; i < s.Length; i++) { bool bo_found = false; for (var j = i + 1; j < s.Length; j++) if (s[i] == s[j]) bo_found = true; if (!bo_found) for(var k = i - 1; k >= 0; k--) if (s[i] == s[k]) bo_found = true; if (!bo_found) return i; } return -1; } }
NET 5.x; C# 9.x; VS-2019
C#-Code

using System.Linq; System.Console.WriteLine(FirstUniqueChar("lovelollorosso")); static int FirstUniqueChar(string s) => s.IndexOf(s.GroupBy(x => x).Select(x => new { key = x.Key, count = x.Count() }) .Where(x => x.count == 1).Select(x => x.key).FirstOrDefault());
NET 5.x; C# 9.x; VS-2019
C#-Code

System.Console.WriteLine(FirstUniqueChar("lovelollorosso")); int FirstUniqueChar(string s) { var a = new int[26]; for (var i = 0; i < s.Length; i++) a[s[i] - 'a']++; for (var i = 0; i < s.Length; i++) if (a[s[i] - 'a'] == 1) return i; return -1; }

using System; namespace erstes_einzelnes_char_in_string { class Program { static void Main(string[] args) { string wort = "trainyourprogrammer"; int zaehler = 0; int position = 0; foreach (var item in wort) { //Mittels diesen Werts wird die Position an welchem sich der Buchstabe befindet ermittelt //Zudem wird am ende mit ihm überprüft ob überheupt ein Wert nur einmal im String vorkommt. position++; foreach (var item1 in wort) { if (item == item1) { zaehler++; } } if (zaehler <= 1) { //Dadurch das ich den Wert Poition am Anfang erhöhe muss hier der Wert um 1 verringert werden. Console.WriteLine("{0} => {1} ({2})", wort, position-1, item); break; } if (position == wort.Length) { Console.WriteLine("{0} => {1} ", wort, -1); } zaehler = 0; } } } }