如何将半个堆栈弹出到另一个堆栈上

问题描述 投票:-1回答:1

嘿我正在使用两个堆栈(使用数组创建)来确定字符串是否是回文。

我宣布了两个堆栈。计划是逐个读入字符串,并将它们推入第一个堆栈。

然后,我将弹出一半堆栈并将它们推到第二个堆栈上。我无法弄清楚如何弹出并推动一半堆栈。

c++ arrays string stack palindrome
1个回答
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。

注意:如果字符串中的字符数量不均匀,则会向下舍入(floor)stOne.size()/ 2。所有代码都在CPP中。

© www.soinside.com 2019 - 2024. All rights reserved.