UVa 11988 (数组模拟链表) Broken Keyboard (a.k.a. Beiju Text)
2024-10-18 22:33:16
题意:
模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是Home键,如果是']'则认作End键。
问最终屏幕上显示的结果是什么字符串。
分析:
如果在数组用大量的移动字符必然很耗时。所以next数组表示显示屏中s[i]右边的字符编号,变量cur模拟光标,即当前光标位于s[cur]的右边。
变量last记录显示屏最后一个字符的下标。
我理解的连接的情况应该是这样子的:
//#define LOCAL
#include <cstdio>
#include <cstring> const int maxn = + ;
int last, cur, next[maxn];
char s[maxn]; int main(void)
{
#ifdef LOCAL
freopen("11988in.txt", "r", stdin);
#endif while(scanf("%s", s + ) == )
{
int n = strlen(s + );
last = cur = ;
next[] = ; for(int i = ; i <= n; ++i)
{
char ch = s[i];
if(s[i] == '[') cur = ;
else if(s[i] == ']') cur = last;
else
{
next[i] = next[cur];
next[cur] = i;
if(cur == last) last = i; //更新最后一个字符编号
cur = i; //移动光标
}
} for(int i = next[]; i != ; i = next[i])
printf("%c", s[i]);
puts("");
} return ;
}
代码君
最新文章
- 符合我公司GIS开源解决方案的探讨
- Codeforces Round #373 (Div. 2)
- 关于Java中的GUI事件处理
- ios 网络字节顺序的转换HTOS
- 侯捷C++ Type traits(类型萃取
- 【NOI2008】假面舞会(图论,搜索)
- 31. Next Permutation(中等,搞清楚啥是 next permutation)
- c/c++ 重载运算符 类型转换运算符
- python3百度设置高级搜索例子
- python学习 第二天
- WINDOWS自带md5校验工具
- Unity在WPF中的应用
- [sharepoint]Rest api相关知识(转)
- Deep Learning(深度学习)学习笔记整理系列 一
- 1、爬虫简介与request模块
- tar 使用总结
- C# 从类库中获取资源图片,把图片资源保存到类库中
- 【bzoj】2733: [HNOI2012]永无乡
- efcore操作mysql,出现System.InvalidOperationException:“No coercion operator is defined between types &#39;System.Int16&#39; and &#39;System.Boolean&#39;.”
- Django 2.0.1 官方文档翻译:接下来读什么(page 14)