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

时间:2019-03-17 19:17:39

标签: c++ arrays string stack palindrome

嘿,我正在使用两个堆栈(使用数组创建)来确定一个字符串是否为回文式的程序。

我声明了两个堆栈。计划是逐个读取字符串,并将其推入第一个堆栈。

然后,我将弹出一半堆栈并将其推入第二个堆栈。我不知道如何弹出并压入一半。

1 个答案:

答案 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中。