我正在编写一个函数,告诉用户他们的输入是否是回文(字符串向后,因为它是向前的。我应该使用bool函数,它使用给我的cstring库,其中我填写了一段时间来执行算法。
bool checkPalindrome(char* cstr)
{
char* front = cstr;
char* back = cstr + strlen(cstr)-1;
while(front < back)
{
// i can only change within this while loop
if(cstr[front] != cstr[back])
{
return false;
}
front++;
back++;
}
return true;
}
老实说我不知道我是否正确这样做,我在while循环中的if语句中出现“无效类型”错误,因为我在数组中调用指针字符,我是猜我做不到。我写了一个正确的函数,声明front
和back
为整数,但我应该使用这个确切的函数只改变while语句中的内容。
任何意见或建议都将不胜感激!
答案 0 :(得分:1)
front
的 back
和char*
。要比较它们的值,您应该取消引用指针。例如:
if (*front != *back)
注意:
要使用if (cstr[front] != cstr[back])
,front
和back
需要是整数值类型(例如int
或size_t
)。
答案 1 :(得分:1)
front
和back
是指向正确位置的指针,因此:
if (*front!=*back)
还会修改指针的移动方式:
front++; // move forwards
back--; // move backwards