没啥好说的,直接上模拟。
首先,我们找到第一个分隔的标识符,然后用 std::s.substr
提取所需要的 string
串,判断是否是整数;再把剩下的串提取出来,重复上述操作即可。注意判断整数时要注意前导零和单个 0
的情况。
#include<cstdio>
#include<string>
#include<iostream>
#include<algorithm>
#include<vector>
#define pii pair<int,int>
#define mp make_pair
#define ll long long
using namespace std;
string my,tmp;
int it;
vector<string> v1,v2;
bool is_number(string s) {
if(!s.size()||s[0]==‘0‘&&s.size()>1) return 0;
for(int i=0;i<s.size();i++) {
if(s[i]<‘0‘||s[i]>‘9‘) return 0;
}
return 1;
}
void output(vector<string> v1) {
if(!v1.size()) cout<<‘-‘<<endl;
else {
cout<<"\""<<v1[0];
for(int i=1;i<v1.size();i++) {
cout<<‘,‘<<v1[i];
}
cout<<"\""<<endl;
}
}
signed main() {
// freopen("data.in","r",stdin);
cin>>my;
while(1) {
int pos=-1;
for(int i=0;i<my.size();i++) {
if(my[i]==‘,‘||my[i]==‘;‘) {
pos=i;
break;
}
}
if(pos==-1) {
if(is_number(my)) v1.push_back(my);
else v2.push_back(my);
break;
}
tmp=my.substr(0,pos);
if(is_number(tmp)) v1.push_back(tmp);
else v2.push_back(tmp);
my=my.substr(pos+1);
}
output(v1),output(v2);
}