用堆栈编写判断字符串是否为回文的算法 5
若以下回答无法解决问题,邀请你更新回答
1个回答
展开全部
const char *szStr = "abddeaeddba";
BOOL IsLoop(const char *p)
{
char stack[100];
int i,j,l;
l = strlen(p);
j = l / 2; // 取中间位置
j = (l % 2 == 0)?j:j-1; // 长度为奇偶时的修正
for(i = 0; i <= j; i++)
{
stack[i] = p[i];
}
for(i = j,j+=(l % 2 == 0)?1:2;i > -1; i--,j++)
{
if(stack[i] != p[j]) // stack[i--]算不算STACK操作?
return false;
}
return true;
}
int main()
{
// 只要szStr长度不超过99个字符则不会出问题
printf("%s is %s a loop string\n",szStr, IsLoop(szStr)?"":"not");
}
BOOL IsLoop(const char *p)
{
char stack[100];
int i,j,l;
l = strlen(p);
j = l / 2; // 取中间位置
j = (l % 2 == 0)?j:j-1; // 长度为奇偶时的修正
for(i = 0; i <= j; i++)
{
stack[i] = p[i];
}
for(i = j,j+=(l % 2 == 0)?1:2;i > -1; i--,j++)
{
if(stack[i] != p[j]) // stack[i--]算不算STACK操作?
return false;
}
return true;
}
int main()
{
// 只要szStr长度不超过99个字符则不会出问题
printf("%s is %s a loop string\n",szStr, IsLoop(szStr)?"":"not");
}
本回答被网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询