A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 严明 初级黑马   /  2012-6-23 18:00  /  1160 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

今天我在使用栈实现这个函数bool  isPalindrome(string s)时,有个小问题,
我是这样实现的

bool isPalindroom(const string s)
{
      stack<char>  stack;
for (int i=0; i<s.length();i++)
    stack.push(s[i]);
for (int i=0; i<s.length();i++)
    if (stack.top() != s[i] )return false;
    else stack.pop();
return true;
}

在计算机中每次执行递归时,都会使用使用一个栈存储当前的运行时状态来执行递归函数,我为了重写递归,
而在上面的代码中我已经push[i]了,然后再当stack.top() = s[i]时,又用 pop()压入了,按理说逻辑上是没有错误的,而在执行的时候还是会报错.

高手指点下,上面代码有什么地方不合理吗?



1 个回复

倒序浏览
这个逻辑。String = "abcd"
栈  a,b,c,d   此时top指向的是d
进到第二个for循环  d != a ,
所以 return flase
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马