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;
}
}
}
}
