B3998 [洛谷 202406GESP 模拟 四级] 小苏的键盘——题解

· · 题解

题目大意

给你一些字符串(或字符),如果是<bs>就删除上一个输入的字符,其他正常输入,求输入完成的内容

思路

题意模拟在脑海中容易实现,但是在代码上就有些困难。拦住我们的绊脚石其实是如何存储他。我们可能会想到两种,char或string。但char不好确定输入个数,所以选择string(个人理解:遇到空格或换行就停止)。

那删除,存储怎么办呢 可以选择vector,不用担心大小

废话不多说,直接上代码

#include<bits/stdc++.h>
using namespace std;
vector<char> v;
int main(){
    int n;
    cin>>n;
    for(int i=1;i<=n;i++)
    {
        string t;
        cin>>t;
        if(t[0]!='<')//退格
        {
            v.push_back(t[0]);
        }
        else
            if(!v.empty())
                v.resize(v.size()-1);//vector缩小一位————退格
    }
    for(int i=0;i<v.size();i++)
    {
        cout<<v[i];
    }
    return 0;
}