【发布时间】:2015-07-17 07:42:25
【问题描述】:
我无法理解解决此问题的代码有什么问题。任何帮助,将不胜感激。
在一个或多个等于目标的连续字符串中查找最早出现的字符串;将开始设置为目标第一次出现的位置,将结束设置为该最早连续序列中目标的最后一次出现,并返回真。如果 n 为负数或 a 中没有字符串等于 target,则 begin 和 end 保持不变并返回 false。
bool locateSequence(const string a[], int n, string target, int& begin, int& end)
{
if (n < 0)
return 0;
for (int i=0; i < n-1; i++)
{
if (a[i]==target && a[i+1]==target )
{
begin = i;
break;
}
}
for (int f=0; f < n-1; f++)
{
if (a[f]==target && a[f+1]==target )
{
end = f + 1;
return true;
}
}
return false;
}
【问题讨论】:
-
什么是错误(编译,错误结果,...)?输入,预期输出?
-
顺便说一句,
-1不是bool。 -
您的函数旨在返回一个布尔值,因此通过在第 nr.4 行
if (n<0) return -1返回 -1 肯定会引发错误。 -
@Ange1:嗯,实际上将
bool设置为-1是有效的。没有任何错误。但是,由于它不是0,它解析为true,这可能不是 OP 的意图...... -
我更愿意将
n声明为unsigned int,而不是通过检查if (n < 0)丢弃一半可能的值。