zoukankan      html  css  js  c++  java
  • Uva


    用链表,不必用结构体方式,太麻烦,直接用数组把字符串存起来,比如字符数组为s,用next[i]表示当前字符下一个应该显示字符的位置,就OK了。

    直接用数组做,然后插入的时候移动数组是很不好的,很有可能超时,每次移动耗费时间太多。

    AC代码:

    #include <iostream>
    #include <cstdio>
    #include <cstdlib>
    #include <cctype>
    #include <cstring>
    #include <string>
    #include <sstream>
    #include <vector>
    #include <set>
    #include <map>
    #include <algorithm>
    #include <stack>
    #include <queue>
    #include <bitset> 
    #include <cassert> 
    
    using namespace std;
    
    const int maxn = 100005;
    int last, cur, nextP[maxn]; // 光标在cur号字符后面
    char s[maxn];
    
    int main()
    {
    	while (scanf("%s", s + 1) == 1) {
    		int n = strlen(s + 1);
    		last = cur = 0;
    		nextP[0] = 0;
    
    		for (int i = 1; i <= n; i++) {
    			char ch = s[i];
    			if (ch == '[') {
    				cur = 0;
    			}
    			else if (ch == ']') {
    				cur = last;
    			}
    			else {
    				nextP[i] = nextP[cur];
    				nextP[cur] = i;
    				if (cur == last) { // 更新最后一个字符编号
    					last = i;
    				}
    				cur = i; // 移动光标
    			}
    		}
    		
    		for (int i = nextP[0]; i != 0; i = nextP[i]) {
    			printf("%c", s[i]);
    		}
    		cout << endl;
    	}
    
    	return 0;
    }




  • 相关阅读:
    第二阶段每日总结01
    第十二周进度条
    构建之法阅读笔记05
    找水王01
    第十一周进度条
    第十周进度条
    构建之法阅读笔记04
    第九周进度条
    每日工作总结10
    每日工作总结09
  • 原文地址:https://www.cnblogs.com/zhangyaoqi/p/4591574.html
Copyright © 2011-2022 走看看