问题很简单 - 回文检查。这些限制使其变得相当复杂:
strlen()
)。这是我能想到的最好的:
bool checkPalindrome(char input[]) {
static int count = 0, i = 0, done = 0;
while(!done){
if(input[i]!='\0'){
// length of string is stored in count
count++;
i++;
}
}
done = 1; i = 0;
if(count>0){
// check characters from start and end
if(input[i]==input[count-1]){
count = count - 2;
return checkPalindrome(input+1);
}
else
return false;
}
else{
return true;
}
}
但这不适用于我应该提交此功能的在线IDE。它只会引发“超出时间限制”错误。有人能指出我走向正确的方向吗?
答案 0 :(得分:1)
在第一个循环中,检查字符串的长度,是一个无限循环。 完成始终设置为0并且永远不会更改。 实际上,这个标志不是必需的,你可以按如下方式修改循环:
while (input[i] != '\0') {
count++;
i++;
}
如果您确实希望保持“完成”状态。如果if子句条件为false,则只需将其设置为1:
while (!done) {
if (input[i] != '\0') {
count++;
i++;
}
else
{
done = 1;
}
}