Educational Codeforces Round 2 A. Extract Numbers(模拟)

来源:互联网 发布:深圳国税开票软件下载 编辑:程序博客网 时间:2024/05/17 01:46

题目链接
题意:给你一个字符串,其中逗号,封号分开的是单词,现在要把由纯数字(多位数字的话不能以0,或者-开头)的单词选择出来组合为A串,剩下的是B串,如果某个串是空输出’-“
解法:模拟,先把单词分割出来,然后,写一个判断是不是数字的函数

#define CF#ifndef CF#include<cstdio>#include<algorithm>#include<cstring>#include<cmath>#else#include<bits/stdc++.h>#endif // CFusing namespace std;#define LL long long#define pb push_back#define X first#define Y second#define cl(a,b) memset(a,b,sizeof(a))typedef pair<long long ,long long > P;const int maxn=2*100005;const LL inf=1LL<<50;const LL mod=1e9+7;string s;vector<string> num,other,v;bool ok(string s){    if(s=="")return false;    if(s.length()==1&&s[0]>='0'&&s[0]<='9')return true;    if(s[0]=='0')return false;    for(int i=0;i<s.length();i++){        if(!(s[i]>='0'&&s[i]<='9'))return false;    }    return true;}int main(){    cin>>s;    int n=s.length();    for(int i=0;i<n;i++){        if(s[i]==',')s[i]=';';    }    int i=0;    while(i<n){        string tmp="";        while(i<n&&s[i]!=';')tmp+=s[i],i++;        v.pb(tmp);        if(i<n&&s[i]==';')i++;        //tmp="";        //while(i<n&&s[i]==';')i++;    }    if(s[n-1]==';')v.pb("");    int N=v.size();    for(int i=0;i<N;i++){        if(ok(v[i]))num.pb(v[i]);        else other.pb(v[i]);    }    //cout<<s[n-1]<<endl;    if(num.empty()){        puts("-");    }    else {        for(int i=0;i<num.size();i++){            if(i==0)cout<<"\""<<num[i];            else cout<<","<<num[i];        }        cout<<"\""<<endl;    }    if(other.empty()){        puts("-");    }    else {        for(int i=0;i<other.size();i++){            if(i==0)cout<<"\""<<other[i];            else cout<<","<<other[i];        }        cout<<"\""<<endl;    }    return 0;}
0 0