zoukankan      html  css  js  c++  java
  • UVa11988 Broken Keyboard 损坏的键盘【list】

    题目链接:https://vjudge.net/problem/UVA-11988

    题目大意:

    键盘的home键和end键出现了问题。

    在输入一段文本时,home键或end键可能会自动被按下,home键会使光标移动到文章开头,end键会使光标移动到文章结尾。

    输入包含多组数据,每组数据一行,包含不超过100000个字母,表示输入文本。[表示home键按下,]表示end键按下。

    对每组输入输出一行,表示你在显示屏上看到的文本。

    Sample Input
    This_is_a_[Beiju]_text
    [[]][][]Happy_Birthday_to_Tsinghua_University
     
     
    Sample Output
    BeijuThis_is_a__text
    Happy_Birthday_to_Tsinghua_University
     
    stl 链表
    #include <iostream>
    #include <cstdio>
    #include <string.h>
    #include <list>
    using namespace std;
    char str[1000100];
    int main()
    {
        while(scanf("%s",str)!=EOF){
            list<char> l;
            list<char>::iterator p = l.begin();
            int len = strlen(str);
            for(int i=0; i<len; i++){
                if(str[i]=='[')p = l.begin();
                else if(str[i]==']')p = l.end();
                else l.insert(p, str[i]);
            }
            for(p = l.begin(); p!=l.end(); ++p)cout << *p;
            cout << endl;
        }
        return 0;
    }

    模拟链表

    #include <iostream>
    #include<string.h>
    #include <algorithm>
    using namespace std;
    const int maxn = 100000 + 5;
     
    char buf[maxn];
    int Next[maxn];
     
    int main(){
        int cur, last,n;
        while (scanf("%s", buf+1)!=EOF){
            n = strlen(buf + 1);
            cur = last = 0;
            for (int i = 1; i <= n; i++){
                if (buf[i] == '[')cur = 0;    //house键
                else if (buf[i] == ']')cur = last; //end键
                else{
                    Next[i] = Next[cur];   //字符i的下一个位置为cur的下一个位置
                    Next[cur] = i;         //curr的下一个位置为i
                    //更新cur和last
                    if (cur == last)last = i;   //cur等于i表示光标在显示屏最后一个字符
                    cur = i;  //移动光标
                }
            }
            Next[last] = 0;  //结束位置
            for (int i = Next[0]; i != 0; i = Next[i])
                printf("%c", buf[i]);
            printf("
    ");
        }
        return 0;
    }

    2018-03-30

     
     


    作者:is_ok
    出处:http://www.cnblogs.com/00isok/
    本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。

  • 相关阅读:
    第6章 对列表应用样式和创建导航条
    第3章 可视化格式模型
    第2章 为样式找到应用目标
    精通CSS 第1章
    JavaScript作用域学习笔记
    getByClass()
    判断各种数据类型
    值类型和引用类型的区别
    [原]Docker部署SuperMap8.1.1
    Docker初步
  • 原文地址:https://www.cnblogs.com/00isok/p/8679211.html
Copyright © 2011-2022 走看看