刷题记录1-小红书2020校招算法笔试题卷二-[编程题]笔记草稿

一、题目描述:
薯队长写了一篇笔记草稿,请你帮忙输出最后内容。
1.输入字符包括,"(" , ")" 和 "<"和其他字符。
2.其他字符表示笔记内容。
3.()之间表示注释内容,任何字符都无效。 括号保证成对出现。
4."<"表示退格, 删去前面一个笔记内容字符。括号不受"<"影响 。
输入描述:
输入一行字符串。长度<=10000.
输出描述:
输出一行字符串,表示最终的笔记内容。
输入例子1:
Corona(Trump)USA<<<Virus
输出例子1:
CoronaVirus
二、思路
采用栈来保存字符,根据条件来弹出元素,剩下的就是合法的元素。最后元素出栈覆盖原字符串,同时返回合法的元素长度,进行范围输出。
三、代码实现

#include<iostream>
#include<vector>
#include<string>
#include<stack>
using namespace std;
int Q1(string &str){
    int len = str.length(),j=0;
    stack<char> strStack;
    string tempstr = "";
    int hasKuoNum = 0;
    for (int i = 0; i < len; i++)
    {
        if (str[i]=='(')
        {
            hasKuoNum +=1;
            continue;
        }
        if (str[i]==')')
        {
            hasKuoNum -=1;
            continue;
        }
        if (hasKuoNum==0)
        {
            if (str[i]!='<')
                strStack.push(str[i]);
            else
                if(!strStack.empty()) strStack.pop();
        }
    }
    while (!strStack.empty())
    {
        char tt = strStack.top();
        tempstr += tt;
        strStack.pop();
    }
    len = tempstr.length();
    for (int i = len-1; i >=0; i--)
    {
        str[j] = tempstr[i];
        j++;
    }
    return j;
}
void dealwithQ1(){
    string str;
    cin>>str;
    int len = Q1(str);
    for (int i = 0; i < len; i++)
        cout<<str[i];
    cout<<endl;
}
int main(){
    dealwithQ1();
    return 0;
}

四、实现效果
图片说明

全部评论

相关推荐

行云流水1971:你的简历已经有不错的内容基础,但在岗位匹配度、成果量化、逻辑分层上还有优化空间,我结合产品 / 金融科技类岗位偏好帮你调整: 一、现有问题 & 优化方向 信息冗余:课程 / 学生工作与目标岗位关联弱,可精简; 成果颗粒度不足:部分数据缺少 “对比基准”(比如 “效率提升” 没说之前的情况); 岗位标签弱:产品岗核心能力(如需求闭环、PRD 撰写)体现不够突出。 二、优化后简历(以 “金融科技产品岗” 为例) 教育经历 2023.09-2027.06 郑州轻工业大学(公办一本) | 软件工程 | 本科 核心课程:Java 程序设计、数据库原理、Python(匹配产品岗 “技术理解” 需求) 学习成果:专业核心课 90+,获校级一等奖学金; 学生工作:院学生会主席,统筹 6 场校级活动(覆盖 2000 + 人次),锻炼跨部门协作与项目统筹能力。 实习经历
投了多少份简历才上岸
点赞 评论 收藏
分享
评论
点赞
2
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务