黑马程序员技术交流社区
标题:
遇到一个小问题请高手指点下
[打印本页]
作者:
严明
时间:
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