验证二叉树的前序序列化,

问题遇到的现象和发生背景

https://leetcode-cn.com/problems/verify-preorder-serialization-of-a-binary-tree/

问题相关代码,请勿粘贴截图
打算用一个vector模拟一个栈,末尾两个##就删去,把末尾的元素换成#,请问这个代码有问题吗
class Solution {
public:
    bool isValidSerialization(string preorder) {
        vector<char> st;
        int n;

        for(int i = 0;i<preorder.size();i++){
            st.push_back(preorder[i]);
        }
        while(st.size()>=3&&st[st.size()-1] == '#'&&st[st.size()-2] == '#'&&st[st.size()-3] != '#'){
            st.pop_back();
            st.pop_back();
            st.pop_back();
            st.push_back('#');
        }

        return st.size() == 1&&st[0] == '#';
    }
};

运行结果及报错内容
我的解答思路和尝试过的方法
我想要达到的结果

我看着没啥问题,末尾两个##就删去,你这判断了倒数3个