题意:
给你一串字符串 s;
‘,’ 和';'作为分隔符,其他被视作word,word可以为空;
将这些words分离出来,整数(不包括前导0和浮点数)保存到 string a, 其余保存到 string b;
输出 string a, string b,若没有内容,输出'-'
思路:
将所有‘,’和';'换成空格,用一个string t从前往后读入
遇到空格
①t.size()==0 即有空word
②t[0] == 0 && t.size() > 1 即前导0
③用flag标记是否为整数word
代码如下:
#include<cstdio>
#include<cstring>
#include<string>
#include<algorithm>
#include<iostream>
using namespace std;
typedef long long ll;
const int N = 1E5 + 10;
string s, a, b, t;
int main()
{
cin >> s;
for(int i = 0; i < s.size(); ++i)
if (s[i] == ',' || s[i] == ';') s[i] = ' ';
bool flag = 0;
s += " ";
t = a = b = "";
for (int i = 0; i < s.size(); ++i)
{
if (s[i] == ' ')
{
if (flag == 1 || (t[0] == '0' && t.size() > 1) || t.size() == 0)
b += "," + t;
else a += "," + t;
flag = 0;
t = "";
continue;
}
if (s[i] < '0' || s[i] > '9') flag = 1;
t += s[i];
}
if (a != "")
{
a.erase(0, 1);
cout << '"' << a << '"' << "\n";
}
else cout << "-\n";
if (b != "")
{
b.erase(0, 1);
cout << '"' << b << '"' << "\n";
}
else cout << "-\n";
return 0;
}