暑假集训单切赛第二场 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(字符串处理)
一开始不懂啊,什么Home键,什么End键,还以为相当于括号,[]里的东西先打印出来呢。后来果断百度了一下。 悲催啊。。。
题意:给定一个字符串,内部含有'['和']'光标转移指令,'['代表光标移向文章头,']'代表光标移向文章尾,问最终在屏幕上显示的字符串序列是什么
思路:直接模拟一下即可,不过因为由于会可能移动到字符串开头以及结尾,所以我开了3个char数组。
str1存储由于'['的原因而打印在开头的字符,str3存储由于']'的原因打印在结尾的字符,str2则是存储一开始在没遇到'['或']'之前的字符。
在A这道题的15个人里面,我写的竟然是最快的,82MS,就稍微沾沾自喜一下了哈。
#include <iostream>
#include <stdio.h>
#include <string.h>
#include <algorithm>
#include <stack> using namespace std;
stack<char> s;
char str[]; char ans1[];
char ans2[];
char ans3[];
int main() {
while(scanf("%s",str)!=EOF) {
int len=strlen(str);
//preidx表示ans1中最后索引所在的位置(它是从后往前移动的)
//idx就是ans2中索引的位置
//aftidx是指ans3中索引的位置
int preidx=,idx=,aftidx=;
for(int i=; i<len; i++) {
char ch=str[i];
if(ch=='[') {
//l记录'['之后的第一个字符的位置
int l=++i;
while(i<len && str[i]!='[' && str[i]!=']') {
//ans=str.charAt(i)+ans;
i++;
}
//最后i-1则是记录的是接下来遇到的'['或']'的前一个位置
for(int j=i-; j>=l; j--) {
ans1[preidx]=str[j];
preidx--;
}
i--;
} else if(ch==']') {
int l=++i;
while(i<len && str[i]!='['&& str[i]!=']') {
i++;
}
for(int j=l; j<i; j++) {
ans3[aftidx]=str[j];
aftidx++;
}
i--;
} else {
ans2[idx]=str[i];
idx++;
}
}
for(int i=preidx+; i<=; i++)
printf("%c",ans1[i]);
for(int i=; i<idx; i++)
printf("%c",ans2[i]);
for(int i=; i<aftidx; i++)
printf("%c",ans3[i]);
printf("\n");
}
return ;
}
暑假集训单切赛第二场 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(字符串处理)的更多相关文章
- 暑假集训单切赛第二场 UVA 10982 Troublemakers
题意:将点放在两个集合,同一个集合的边保留,不同集合的边删去,使得边至少减少一半. 输出任何一种方案即可.如果不能,输出Impossible 思路:设如果两个人为一对捣蛋鬼,则two[i][j]=t ...
- UVA 11988 Broken Keyboard (a.k.a. Beiju Text)(链表)
题目代号:UVA 11988 题目链接:https://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&pa ...
- 暑假集训单切赛第一场 UVA 1737 Mnemonics and Palindromes 3
题意:求由a,b,c三个字母组成的长度为n的字符串,其任意连续的至少长度大于等于2的子字符串都不是回文,问这个字符串有多少种?并字典序输出 如果所有种类的字符串总长度大于100000个字符,就输出TO ...
- 链表 UVA 11988 Broken Keyboard (a.k.a. Beiju Text)
题目传送门 题意:训练指南P244 分析:链表模拟,维护链表的head和tail指针 #include <bits/stdc++.h> using namespace std; const ...
- UVa 11988 Broken Keyboard (a.k.a. Beiju Text)
题目复制太麻烦了,甩个链接 http://acm.hust.edu.cn/vjudge/problem/viewProblem.action?id=18693 直接模拟光标操作时间复杂度较高,所以用链 ...
- UVa 11988 - Broken Keyboard (a.k.a. Beiju Text) 题解
刘汝佳的题目,悲剧文本 -_-||| 这里使用vector<string>容器倒置记录数据,然后从后面输出就能够了. 难度就是不知道这种文档究竟哪里是開始输出,故此使用动态管理内存的容器比 ...
- UVa 11988 Broken Keyboard (a.k.a. Beiju Text)(链表)
You're typing a long text with a broken keyboard. Well it's not so badly broken. The only problem wi ...
- UVA 11988 Broken Keyboard (a.k.a. Beiju Text) (链表,模拟)
使用list来模拟就行了,如果熟悉list,那么这道题真是分分钟秒掉... list是双向循环链表,插入和删除操作非常快,缺点是不能像数组一样随机按下标读取. 一下是wiki上说明的相关函数:http ...
- UVA——11988 Broken Keyboard (a.k.a. Beiju Text)
11988 Broken Keyboard (a.k.a. Beiju Text)You’re typing a long text with a broken keyboard. Well it’s ...
随机推荐
- java mail jar冲突
开发环境:jdk1.6.0_25 MyEclipse-8.6 J2EE5 程序编译通过,J2EE5的库里面已经含有javaee.jar文件.里面的javax.mail包下面是jav ...
- JSON结构
JSON(JavaScript Object Notation) 是一种轻量级的数据交换格式.易于人阅读和编写.同时也易于机器解析和生成.它基于JavaScript Programming Langu ...
- 手机网页制作的认识(有关meta标签)
近日以来一直在看JQuery Mobile 一个手机开发框架,说实话真的很头疼的~~~~ 因为里面有很多的属性.方法和事件~~~ 下面是手机网页的一些认识: 一.<meta name=" ...
- CSS3属性box-shadow使用教程
CSS3的box-shadow属性可以让我们轻松实现图层阴影效果.我们来实战详解一下这个属性. 1. box-shadow属性的浏览器兼容性先来看一个这个属性的浏览器兼容性: Opera: 不知道是从 ...
- php生成txt文件换行问题
用双引号即"\r\n"换行,不能用单引号即'\r\n'.
- oracle中的存储过程例子
用了两年Oracle还没写过存储过程,真是十分惭愧,从今天开始学习Oracle存储过程,完全零起点,争取每日一篇学习笔记,可能开始认识的不全面甚至有错误,但坚持下来一定会有收获. . 建立一个存储过程 ...
- Arrays.asList的使用及异常问题
将数组转成List问题,通常我们习惯这样写成:List<String> list = Arrays.asList("1","2"); 于是我们这样就 ...
- Android 中的WiFi剖析
Android的WiFi 我们通常看到WiFi的守护进程wpa_supplicant在我们的ps的进程列表中,这个就是我们的wifi守护进程.wpa_supplicant在external/wpa_s ...
- 【quartz】 数据库方式管理任务
public static void Run(bool inClearJobs, bool inScheduleJobs) { var properties = new NameValueCollec ...
- 在MAC平台下编译Ngnix ,由于MD5算法不能编译通过 解决办法
近期想学习Ngnix 代码,前些日子,对”自己下手狠一次“, 买了MAC 本. 所以想在Mac 上编译,是必须的,不然对不起自己的内心. 不巧遇到了MD5算法编译的问题 src/core/ngx_cr ...