Wie kann ich überprüfen, ob auf ein bestimmtes Zeichen ein anderes Zeichen in einer Zeichenfolge folgt?Prüfen, ob auf ein bestimmtes Zeichen ein anderes Zeichen folgt?
Ich möchte überprüfen, ob auf jedes 'A' in einer Zeichenfolge mindestens ein 'B' folgt. Das "B" muss nicht direkt folgen und es muss keine gerade Anzahl von A's und B's geben.
Zum Beispiel:
AAZZBB = true
AAAXXXXYB = true
BBYYYXXXAXX = false
YYYBABYYYXXXAXX = false
Hier ist Code, den ich gearbeitet, aber es hält Rückkehr wahr:
public bool BalancedAB(string str)
{
int endPos = str.Length - 1;
for (int pos = 0; pos <= endPos; pos++)
{
if (str[pos] == 'A')
{
if (pos < endPos)
{
char next = str[pos + 1];
if (next == 'B')
{
pos++;
continue;
}
}
return true;
}
}
return false;
}
Was kommt in diesem Fall zurück: 'AZZBB'? –
'if (str.LastIndexOf (" A ")! = -1 && str.IndexOf (" B ", str.LastIndexOf (" A "))> -1)' – Vikhram
Dies ist ein ziemlich schlechter Weg, den Code zu strukturieren . Die Verwendung von "continue" erzeugt im Allgemeinen einen schlechten Code-Geruch und es gibt sehr wenige Fälle in der Geschichte, in denen "continue" verwendet werden sollte. Es überrascht mich nicht, dass es fälschlicherweise "wahr" zurückgibt. Wenn Sie an einem 'A' ankommen und das nächste Zeichen nicht' B' ist und es nicht am Ende der Zeichenkette ist, wird es als wahr zurückgegeben. –