暑假集训单切赛第二场 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 ...
随机推荐
- 巧用Excel分列功能处理数据
Technorati 标签: 数据处理 今天,主要工作就是处理测试数据,统计汇总成图表来显示.先来说说要求,然后给出我在折腾这堆数据中遇到的问题以及解决方法. 问题要求: 格 ...
- Linux设备驱动01
准备: 1.英语-是工具 2.电路原理图-补充“数电”的知识 3.阅读内核代码的能力 linux:vi+ctags+cscope windows:source insight 驱动开发的步骤 I.编辑 ...
- zedboard 驱动理解
1 驱动程序的编写 驱动是LINUX开发的必经之路,应用层对底层的调用经过了库与内核,内核下面才是驱动层,当你在应用程序执行对底层的控制时,驱动程序为你的控制提供了接口,或者说是策略. #incl ...
- Mysql 存储程序
#1存储过程create procedure greeting() BEGIN # 77 = 16 FOR username + 60 for hostname + 1 for '@' DECLARE ...
- javascript面向对象--自定义类型
Javascript是基于原型实现面向对象的,因此并没有类和接口,它的对象也与其他基于类的语言中的对象有所不同.在Javascript中,每个对象都是基于一个引用类型创建的,这个引用类型可以是原生类型 ...
- SharedPreferences的基本用法
获取SharedPreferences的两种方式: 1 调用Context对象的getSharedPreferences()方法 2 调用Activity对象的getPreferences()方法 两 ...
- .Net 将一个DataTable分解成多个DataTable
这两天遇到一个问题,我们所接触 的一个系统在导出数据到Excel的时候,产生了内存溢出的错误.原因在于数据过大,它导出是将所有数据存放在一个DataSet的一个表中,再将这个数 据集放入session ...
- openerp学习笔记 domain 增加扩展支持,例如支持 <field name="domain">[('type','=','get_user_ht_type()')]</field>
示例代码1,ir_action_window.read : # -*- coding: utf-8 -*-from openerp.osv import fields,osv class res_us ...
- gcc链接程序时出现undefined reference to""错误
如:: undefined reference to ‘mq_unlink',意思是指函数mq_unlink没有定义. 可以使用如下步骤找到该函数所在的库: 1).查找哪些库包含了或使用了该函数:gr ...
- UIActivityIndicatorView的使用
class ViewController: UIViewController,UIActionSheetDelegate{ @IBOutlet weak var label1: UILabel! @I ...