我编写了以下代码来使用二进制搜索查找字符串中的第一个大写字母:
char first_capital(const char str[], int n)
{
int begin = 0;
int end = n - 1;
int mid;
while (begin <= end)
{
mid = (begin + end) / 2;
if (mid == 0 && isupper(str[mid]))
{
return mid;
}
else if (mid > 0 && isupper(str[mid]) && islower(str[mid - 1]))
{
return mid;
}
if (islower(str[mid]))
{
begin = mid + 1;
}
else
{
end = mid - 1;
}
}
return 0;
}
Run Code Online (Sandbox Code Playgroud)
目前我的代码在测试时没有按预期工作。如果有人能提到我哪里出错了,那会很有帮助。
注意:输入字符串将已经排序(所有小写字母都出现在大写字母之前)。 …