• codeforces 600A Extract Numbers


    模拟题,意思是一个字符串,单词直接用','或';'来分割,可以为空,把不含前导0的整数和其他单词分别放入A和B。按照一定格式输出。

    没有用stl的习惯。维护两个下标i,j,表示开区间(i,j),两段补上分割符号。每个单词后面都加上一个',',输出的时候在处理掉。

    用最后的','判断A和B是不是空。

    #include<bits/stdc++.h>
    using namespace std;
    
    typedef long long ll;
    
    const int LEN = 1e5+5;
    char s[LEN];
    char a[LEN];
    char b[LEN];
    
    bool is_sp(char c){ return c == ';' || c == ','; }
    
    void solve()
    {
        int n = strlen(s);
        s[n] = ';';
        int i = -1, j = 0, p = 0, q = 0;
        bool has_alp = false;
        for(; j <= n; j++){
            if(is_sp(s[j])){
                if(j > i+1){
                    if(has_alp){
                        memcpy(b+q,s+i+1, j-i-1);
                        q += j-i-1;
                        b[q++] = ',';
                    }
                    else {
                        if(j-i-1 > 1 && s[i+1] == '0'){
                            memcpy(b+q,s+i+1, j-i-1);
                            q += j-i-1;
                            b[q++] = ',';
                        }
                        else {
                            memcpy(a+p,s+i+1, j-i-1);
                            p += j-i-1;
                            a[p++] = ',';
                        }
    
                    }
                }
                else b[q++] = ',';
                i = j;
                has_alp = false;
            }
            else {
                if(!has_alp && (isalpha(s[j]) || s[j] == '.')) has_alp = true;
            }
        }
        bool f2 = q;
        if(p){ a[--p] = 0; }
        if(f2){ b[--q] = 0; } // empty
        if(p) printf(""%s"
    ",a);
        else puts("-");
        if(f2) printf(""%s"
    ",b);
        else puts("-");
    }
    
    
    //#define LOCAL
    int main()
    {
    #ifdef LOCAL
        freopen("in.txt","r",stdin);
    #endif
        gets(s);
        solve();
        return 0;
    }
  • 相关阅读:
    pip本地源搭建
    linux 创建 bootable iso 文件
    yum 源本地化 (two)
    linux 网络配置
    linux 设置root可以远程登陆
    察看linux 发行版
    mysql bin-log 设置
    samba 奇怪问题
    delphi中的临界区
    ligerGrid 取得选中行的数据
  • 原文地址:https://www.cnblogs.com/jerryRey/p/5003625.html
Copyright © 2020-2023  润新知