题意:

模拟一个文本编辑器,可以输入字母数字下划线,如果遇到'['则认为是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 ;
}

代码君

最新文章

  1. 符合我公司GIS开源解决方案的探讨
  2. Codeforces Round #373 (Div. 2)
  3. 关于Java中的GUI事件处理
  4. ios 网络字节顺序的转换HTOS
  5. 侯捷C++ Type traits(类型萃取
  6. 【NOI2008】假面舞会(图论,搜索)
  7. 31. Next Permutation(中等,搞清楚啥是 next permutation)
  8. c/c++ 重载运算符 类型转换运算符
  9. python3百度设置高级搜索例子
  10. python学习 第二天
  11. WINDOWS自带md5校验工具
  12. Unity在WPF中的应用
  13. [sharepoint]Rest api相关知识(转)
  14. Deep Learning(深度学习)学习笔记整理系列 一
  15. 1、爬虫简介与request模块
  16. tar 使用总结
  17. C# 从类库中获取资源图片,把图片资源保存到类库中
  18. 【bzoj】2733: [HNOI2012]永无乡
  19. efcore操作mysql,出现System.InvalidOperationException:“No coercion operator is defined between types &#39;System.Int16&#39; and &#39;System.Boolean&#39;.”
  20. Django 2.0.1 官方文档翻译:接下来读什么(page 14)

热门文章

  1. CSS 外边距(margin)重叠及防止方法
  2. docker-py的配置与使用
  3. 如何使用 OneAPM 监控微软 Azure Cloud Service ?
  4. JavaScript 堆内存分析新工具 OneHeap
  5. 二分图点染色 BestCoder 1st Anniversary($) 1004 Bipartite Graph
  6. lintcode :最近公共祖先
  7. RSS FEED的应用
  8. AppWidget框架
  9. ios开发--第三方整理
  10. [iOS]利用系统NSRegularExpression使用正则表达式