博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
uva11988
阅读量:5326 次
发布时间:2019-06-14

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

 

 

 虽然简洁度跟佳爷完全没法比,至少accepted很开心了

 

#include <iostream>

#include <string>
using namespace std;
const int maxd = 100003;
char text[maxd];
int mynext[maxd];
void init(int len)
{
 for (int i = 0;i < len;i++)
  mynext[i] = i+1;
 mynext[len] = -1;
}
int main(void)
{
 //read
 string str;
 while (cin >> str)
 {
  //init next[]
  int len=0;
  while (str[len] == '['||str[len] == ']'&&str[len] == '\0')len++;
  str = str.substr(len);
  len = str.length();
  init(len);
  //core
  int old_tail=0;//承接下文,初始化0处理[]happy类似情况
  for (int i = 0;i < len;i++)
  {
   if (str[i] != '['&&str[i] != ']')old_tail = i + 1;
   else if (str[i] == '[' && (str[i + 1] != '[' && str[i+1] != ']'&& str[i+1]!='\0'))
   {
    mynext[old_tail] = -1;
    int old_head = mynext[0];
    mynext[0] = i + 1 + 1;//str[i+1]为第一个输出字符
    int j;
    for (j = i + 2;str[j] != '['&&str[j] != ']'&&str[j] != '\0';j++);
    mynext[j] = old_head;//str[old_head-1]输出的前一个字符为str[j-1]
    i = j-1;//跳过插进前面的字符
   }
   else if(str[i]==']' && (str[i + 1] != '[' && str[i + 1] != ']' && str[i + 1] != '\0'))
   {
    mynext[old_tail] = i + 1 + 1;
   }
  }
  mynext[old_tail] = -1;
  //output
  for (int i = mynext[0];i != -1;i=mynext[i])
   putchar(str[i-1]);
  putchar('\n');
 }
 
 return 0;
}

转载于:https://www.cnblogs.com/schsb/p/7823610.html

你可能感兴趣的文章
导航栏,标签栏,工具栏和状态栏
查看>>
struts2 中 Preparable 接口实现数据准备
查看>>
mybatis输入输出映射——(五)
查看>>
mysql编译安装
查看>>
centos7中输入ifconfig出现ens33,没有eth0
查看>>
Function.prototype.bind
查看>>
ReentrantLock(重入锁)以及公平性
查看>>
ubuntu下使用hostapd建立wifi热点
查看>>
9个Linux系统常用监控命令
查看>>
GCC compile debug: print include files and compile stage info.
查看>>
27 数组中出现次数超过一半的数字
查看>>
通过JavaScript自由切换iframe
查看>>
spring的HandlerMapping
查看>>
hdu 1848 Fibonacci again and again (SG)
查看>>
hdu 5166 Missing number(。。。)
查看>>
MySQL查询实例
查看>>
我明白了一个词 念念相续
查看>>
HDU 3853 期望概率DP
查看>>
ffplay for mfc 代码备忘录
查看>>
android一些面试题目
查看>>