【发布时间】:2017-09-05 19:20:24
【问题描述】:
如何检查字符串中某个字符后面是否跟着另一个字符?
我想检查字符串中的每个 'A' 后面是否至少有一个 'B'。 'B' 不必直接跟在它后面,也不必有偶数个 A 和 B。
例如:
AAZZBB = 真
AAAXXXXYB = 真
BBYYYXXXAXX = 假
YYYBABYYYXXXAXX = 假
这是我处理的代码,但它一直返回 true:
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;
}
【问题讨论】:
-
在这种情况下会返回什么:
AZZBB? -
if (str.LastIndexOf("A") != -1 && str.IndexOf("B", str.LastIndexOf("A")) > -1) -
这是一种非常糟糕的代码结构方式。使用
continue通常会散发出难闻的代码气味,并且历史上很少有应该使用continue的情况。它错误地返回true并不让我感到惊讶。如果您到达A并且下一个字符不是B并且它不在字符串的末尾,那么它将返回 true。