博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva 11988 - Broken Keyboard (a.k.a. Beiju Text)
阅读量:6416 次
发布时间:2019-06-23

本文共 1793 字,大约阅读时间需要 5 分钟。

题意:有一个键盘坏了  会在你不知道的情况下按下home或者end  给你这个键盘的实际输入  要求输出显示器上的实际显示

解析:输入最大5MB  直接数组检索肯定会超时,用 数组模拟链表

    next数组表示显示屏中s[i]右边的字符编号,变量cur模拟光标,即当前光标位于s[cur]的右边。

    变量last记录显示屏最后一个字符的下标。

1 #include 
2 #include
3 using namespace std; 4 const int N = 100005; 5 char s[N]; 6 int next[N]; 7 8 int main() 9 {10 int last, cur;11 while(~scanf("%s", s+1))12 {13 next[0] = last = cur = 0;14 int length = strlen(s+1);15 for(int i=1; i<=length; i++)16 {17 if(s[i] == '[') cur = 0;18 else if(s[i] == ']') cur = last;19 else20 {21 next[i] = next[cur];22 next[cur] = i;23 if(cur == last) last = i; //更新最后一个字符编号24 cur = i; //移动光标25 }26 }27 for(int i=next[0]; i; i=next[i])28 printf("%c", s[i]);29 printf("\n");30 }31 return 0;32 }

 

使用迭代器求解:

1 #include 
2 #include
3 #include
4 #include
5 using namespace std; 6 7 int main() 8 { 9 string line;10 while (getline(cin, line))11 {12 list
beiju;13 list
::iterator iter(beiju.begin());14 for (size_t i = 0; i < line.size(); ++i)15 {16 // "Home" key.17 if (line[i] == '[')18 iter = beiju.begin();19 // "End" key.20 else if (line[i] == ']')21 iter = beiju.end();22 23 /** Using a vector
works but will get TLE. 24 25 iter = beiju.insert(iter, line[i]); 26 ++iter;27 */28 else29 beiju.insert(iter, line[i]); 30 }31 copy(beiju.begin(), beiju.end(), ostream_iterator
(cout, ""));32 cout << endl;33 }34 return 0;35 }

 

转载于:https://www.cnblogs.com/aze-003/p/5096972.html

你可能感兴趣的文章
闪迪(SanDisk)U盘防伪查询(官方网站)
查看>>
Android onMeasure方法介绍
查看>>
无锁数据结构
查看>>
MySQL的变量查看和设置
查看>>
android onNewIntent
查看>>
XML特殊符号
查看>>
kaptcha可配置项
查看>>
JavaMail邮箱验证用户注册
查看>>
系统时间——ntpd
查看>>
反射实现AOP动态代理模式(Spring AOP实现原理)
查看>>
Spring MVC 4.x + fastjson 1.2.7,封装的List<?>参数
查看>>
js选中问题
查看>>
protobuf
查看>>
4.Java基础复习--Set
查看>>
七:Mysql的乐观锁与悲观锁机制
查看>>
CSS滤镜及渐变 (filter样式表属性)
查看>>
调用上面的@InitBinder 解决客户端上传时间参数转换的问题
查看>>
net.sf.json.JSONException: There is a cycle in the hierarchy异常,解决方法
查看>>
Android自动化测试方向
查看>>
QT中常用数据之间转换
查看>>