当前位置: 首页 > article >正文

C++:AB5 点击消除

题目:

点击消除_牛客题霸_牛客网 (nowcoder.com)


解题思路 

        先将字符串里的字符放入栈里,然后与字符串的下一个字符比较,若相同,栈pop掉栈顶元素,反之,重复步骤。最后栈里的元素就是我们要的最终形态的逆置。(我们将它逆置回来即可)

  • 用string模拟栈结构

        先判断模拟栈和string对象里字符,若相同,删除,反之,放入模拟栈。


代码实现

#include <stack>
#include <string>
#include <iostream> 
using namespace std;

int main()
{
    stack<char> stc;
    string str;

    cin >> str;

    for (int i = 0; i < str.size();)
    {
        stc.push(str[i++]);

        while (!stc.empty() && i < str.size() && stc.top() == str[i])
        {
            stc.pop();
            i++;
        }
    }

    string s;
    while (!stc.empty())
    {
        s.insert(s.begin(), stc.top());
        stc.pop();
    }
    if (s.empty())
        cout << 0;
    else
        cout << s;

    return 0;
}
  • 用string模拟栈结构
#include <iostream>
#include <stack>
#include <string>
using namespace std;

int main() 
{
    string s, str;

    cin >> str;

    for(auto e : str)
    {
        if(s.size() && s.back() == e)
            s.pop_back();
        else
            s += e;
    }

    if(s.empty())
        cout << 0;
    else
        cout << s;
    return 0;
}

 


http://www.kler.cn/news/319512.html

相关文章:

  • 基于大数据的电子产品需求数据分析系统的设计与实现(Python Vue Flask Mysql)
  • 每日一题|2306. 公司命名|哈希映射、集合运算
  • FastAPI挂载静态资源
  • 单词记忆的化境:用思想的流水去淹没坚硬的石块
  • 【网络安全】网络基础第一阶段——第四节:网络协议基础---- VRRP与网络架构设计
  • 三种springboot启动时加载方式
  • 使用Renesas R7FA8D1BH (Cortex®-M85)和微信小程序App数据传输
  • 黑盒测试 | 挖掘.NET程序中的反序列化漏洞
  • 统信服务器操作系统【d版系统上Ansible工具】配置方法
  • MySQL:表的约束
  • 2.Seata 1.5.2 集成Springcloud-alibaba
  • 【算法】贪心+堆排序实现大根堆及标准库容器类的融合使用
  • python 2024-10
  • Angular面试题八
  • 13.第二阶段x86游戏实战2-动态模块地址
  • Unicode编码如何转换为汉字
  • DAY78服务攻防-数据库安全RedisCouchDBH2database未授权访问CVE 漏洞
  • 仓颉编程入门2,启动HTTP服务
  • 基于数据挖掘的航空客户满意度分析预测系统
  • 安卓系统常见问题如native crash,卡顿卡死定位工具命令技巧-android framework实战开发
  • Java_Day05学习
  • 搜维尔科技:通过xsens动作捕捉为影视角色注入生命
  • 前端框架的对比和选择
  • MySQL备份与恢复详解
  • Anaconda/Miniconda的删除和安装
  • rapidocr 提取汇总
  • 可以写自动化测试工具的AI工具
  • [笔记]交流接触器
  • UR机器人坐标系转化
  • C++系列-Stackqueue