黑马程序员技术交流社区

标题: 遇到一个小问题请高手指点下 [打印本页]

作者: 严明    时间: 2012-6-23 18:00
标题: 遇到一个小问题请高手指点下
今天我在使用栈实现这个函数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()压入了,按理说逻辑上是没有错误的,而在执行的时候还是会报错.

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




作者: 闾丘日月    时间: 2012-6-23 18:09
这个逻辑。String = "abcd"
栈  a,b,c,d   此时top指向的是d
进到第二个for循环  d != a ,
所以 return flase




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2