uva 11988 Broken Keyboard (a.k.a. Beiju Text)

简介: 点击打开链接uva 11988 思路: deque模拟 分析: 1 题目给定一个字符串要求通过一序列的模拟输出最后的字符串 2 根据题目的意思[],分别表示的是键盘上的home和end键,home键的作用是跳到起始位置,end的作用是到最后一个位置。

点击打开链接uva 11988

思路: deque模拟
分析:
1 题目给定一个字符串要求通过一序列的模拟输出最后的字符串
2 根据题目的意思[],分别表示的是键盘上的home和end键,home键的作用是跳到起始位置,end的作用是到最后一个位置。
3 根据2我们可以利用双端队列来模拟,如果是[我们插入front,如果是]插入back,最后在输出即可

代码:

#include<deque>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 100010;

char str[MAXN];
deque<string>dqe;

void insert(bool front , bool rear , string s){
    if(front)
        dqe.push_front(s);
    if(rear)
        dqe.push_back(s);
}

void output(){
    while(!dqe.empty()){
         cout<<dqe.front();
         dqe.pop_front();
    }
    puts("");
}

void solve(){
    int len = strlen(str); 
    bool front , rear;
    string s = "";
    front = true;
    rear = false;
    for(int i = 0 ; i < len ; i++){
        if(str[i] == '['){
           insert(front , rear , s);
           s = ""; 
           front = true;
           rear = false;
        }
        else if(str[i] == ']'){
           insert(front , rear , s);
           s = ""; 
           front = false;
           rear = true;
        }
        else{
           s += str[i]; 
        } 
    }
    insert(front , rear , s);
    output();
}

int main(){
    while(scanf("%s" , str) != EOF)
        solve();
    return 0;
}


list 来做

#include<list>
#include<cstdio>
#include<cstring>
#include<iostream>
#include<algorithm>
using namespace std;

const int MAXN = 100010;
list<char>ls;

int main(){
    char str[MAXN];
    while(gets(str)){
         ls.clear();
         int len = strlen(str); 
         list<char>::iterator it = ls.begin();
         for(int i = 0 ; i < len ; i++){
             if(str[i] == '[') 
                it = ls.begin();
             else if(str[i] == ']') 
                it = ls.end();
             else{
                ls.insert(it,str[i]);
             } 
         }
         for(it = ls.begin(); it != ls.end() ; it++)
             printf("%c" , *it);
         puts("");
    } 
    return 0;
}




目录
相关文章
|
存储 NoSQL 测试技术
SystemVerilog学习-05-数组
SystemVerilog学习-05-数组
1288 0
SystemVerilog学习-05-数组
|
Linux Shell
centos7系统双网卡bound绑定配置
centos7双网卡绑定bond 1.bond简介 生产环境必须提供 7×24 小时的网络传输服务。借助于网卡绑定技术,不仅 可以提高网络传输速度,更重要的是,还可以确保在其中一块网卡出现故障时,依然可以正 常提供网络服务。假设我们对两块网卡实施了绑定技术,这样在正常工作中它们会共同传输 数据,使得网络传输的速度变得更快;而且即使有一块网卡突然出现了故障,另外一块网卡 便会立即自动顶替上去,保证数据传输不会中断。
2450 0
|
Linux Go 网络安全
goland 远程调试 remote debug
goland 远程调试 remote debug
480 0
|
传感器 API Android开发
Android摄像头采集选Camera1还是Camera2?
Camera1与Camera2是Android平台上的两种摄像头API。Camera1(API1)在Android 5.0后被标记为过时,新项目应优先选用Camera2(API2)。Camera2提供了更精细的控制选项,如曝光时间、ISO感光度等;支持多摄像头管理;采用异步操作提高应用响应速度;并支持RAW图像捕获及实时图像处理。此外,它还具备更好的适配性和扩展性,适用于各类应用场景,如相机应用开发、视频通话和计算机视觉等。因此,在现代Android开发中推荐使用Camera2。
370 0
|
IDE Java 开发工具
Python新手常见问题四:如何规避Python中的缩进错误?
在Python编程语言中,代码块的结构和逻辑是通过缩进来组织的,这与其他许多语言依赖花括号(如Java、C++)的方式大相径庭。对于初学者来说,正确理解和使用缩进规则至关重要,因为不恰当的缩进会导致IndentationError,从而影响程序的执行。本文将详细探讨Python缩进错误的常见场景,并提供有效的预防措施。
1118 1
|
数据管理 测试技术 API
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
在进行软件接口测试或设计自动化测试框架时,一个不比可避免的过程就是: 参数化,在利用python进行自动化测试开发时,通常会使用excel来做数据管理,利用xlrd、xlwt开源包来读写excel。例如:当我们登录的账号有多个的时候,我们一般用 excel 存放测试数据,本篇文章介绍,python 读取excel 方法,并保存为字典格式。
492 0
python接口自动化(三十七)-封装与调用--读取excel 数据(详解)
|
监控 Ubuntu Linux
Linux下使用KVM虚拟机安装华为OpenEuler系统
Linux下使用KVM虚拟机安装华为OpenEuler系统
Linux下使用KVM虚拟机安装华为OpenEuler系统
对比十二年前的vb代码,发现了点有意思的东西
对比十二年前的vb代码,发现了点有意思的东西
227 0
对比十二年前的vb代码,发现了点有意思的东西
|
安全 Java C++
JVM16_类的概述、分类、ClassLoader源码分析、自定义类的加载器、双亲委派机制、沙箱安全机制(三)
⑥. 测试不同的类加载器 ③. ClassLoader源码剖析 ①. ClassLoader与现有类加载器的关系
138 0
JVM16_类的概述、分类、ClassLoader源码分析、自定义类的加载器、双亲委派机制、沙箱安全机制(三)
|
9天前
|
人工智能 运维 安全