嘿,我正在使用两个堆栈(使用数组创建)来确定一个字符串是否为回文式的程序。
我声明了两个堆栈。计划是逐个读取字符串,并将其推入第一个堆栈。
然后,我将弹出一半堆栈并将其推入第二个堆栈。我不知道如何弹出并压入一半。
答案 0 :(得分:1)
因此给出了两个堆栈对象,它们最初没有任何值:
Stack stOne, stTwo;
假设您已实现::size(), ::push(), ::pop()
,其中pop返回返回存储在堆栈顶部的值,对于您的Stack对象,您想将给定字符串的所有字符推入stOne
中。然后,您将不得不stOne
弹出stOne.size()/2
次数,并将字符推入stTwo
:
void solvePalindrome(std::string str){
for(int i=0; i<str.size(); i++){
stOne.push(str[i]);
}
for(int i=0; i<stOne.size()/2; i++){
stTwo.push(stOne.pop());
}
//do your comparison here
}
或者,如果尚未实现::size()
,则可以直接使用str.size()/ 2代替stOne.size()/ 2。
注意:如果字符串中字符的数量不均匀,则它将舍入stlo.size()/ 2。所有代码都在CPP中。