• codeforces gym 100286 I iSharp (字符串模拟)


    题目链接

    给定一个字符串。输入是int& a*[]&, b, c*;  

    输出是

    int&&[]* a;
    int& b;
    int&* c;

    输入格式里逗号后面一定有个空格,把字母后面的符号逆序拿到前面来,按每个逗号分隔输出即可。

    注意输出格式一定是定义类型+符号+空格+字母或字符串+分号。

    #include <iostream>
    #include <cstdio>
    #include <cmath>
    #include <cstring>
    #include <algorithm>
    #include <queue>
    using namespace std;
    char s[345];
    char c[345],cnt1=0;
    int main()
    {
        freopen("isharp.in","r",stdin);
        freopen("isharp.out","w",stdout);
        while(gets(s))
        {
            memset(c,0,sizeof(c));
            int len=strlen(s);
            for(int i=0;i<len;i++)
            {
                if(s[i]!=' ')
                c[i]=s[i];
                else
                {
                    cnt1=i;
                    break;
                }
            }
            //cout<<c<<endl;;
            int ss=cnt1+1;
            int ee=-1;
            for(int i=cnt1+1;i<len;i++)
            {
                if(s[i]!=','&&s[i]!=';')
                    continue;
                else
                {
                    ee=i-1;
                    cout<<c;
                    for(int j=ee;j>=ss;j--)
                    {
                        if(!((s[j]>='a'&&s[j]<='z')||(s[j]>='A'&&s[j]<='Z')))
                        {
                            if(s[j]!=']')
                            printf("%c",s[j]);
                            else
                            {
                                printf("[]");
                                j--;
                            }
                        }
                        else
                        {
                            bool first=true;
                            for(int k=ss;k<=j;k++)
                            {
                                if(!((s[k]>='a'&&s[k]<='z')||(s[k]>='A'&&s[k]<='Z')))
                                printf("%c",s[k]);
                                else if(first)
                                {
                                    printf(" %c",s[k]);
                                    first=false;
                                }
                                else
                                printf("%c",s[k]);
                            }
                            printf(";
    ");
                            ss=ee+3;
                            i+=2;
                            break;
                        }
                    }
                }
            }
        }
        return 0;
    }
    // int& a*[]&, b, c*;
  • 相关阅读:
    HDU 2594 扩展kmp模板题
    HDU 1358 简单kmp
    HDU 3336 扩展kmp
    SPOJ SUBLEX 求第k小子串
    Codeforces 235C
    HDU 4622 Reincarnation
    HDU 4622 求解区间字符串中的不同子串的个数
    [LeetCode] Length of Last Word 字符串查找
    [LeetCode] Sudoku Solver 解数独,递归,回溯
    [LeetCode] Longest Common Prefix 字符串公有前序
  • 原文地址:https://www.cnblogs.com/Ritchie/p/5869728.html
Copyright © 2020-2023  润新知