今天我在使用栈实现这个函数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()压入了,按理说逻辑上是没有错误的,而在执行的时候还是会报错.
高手指点下,上面代码有什么地方不合理吗?
|
|