Extract Numbers

来源:互联网 发布:阿里云实例快照是什么 编辑:程序博客网 时间:2024/05/29 19:01

Extract Numbers

You are given string s. Let's call word any largest sequence of consecutive symbols without symbols ',' (comma) and ';' (semicolon). For example, there are four words in string "aba,123;1a;0": "aba", "123", "1a", "0". A word can be empty: for example, the string s=";;" contains three empty words separated by ';'.You should find all words in the given string that are nonnegative INTEGER numbers without leading zeroes and build by them new string a. String a should contain all words that are numbers separating them by ',' (the order of numbers should remain the same as in the string s). By all other words you should build string b in the same way (the order of numbers should remain the same as in the string s).Here strings "101", "0" are INTEGER numbers, but "01" and "1.0" are not.For example, for the string aba,123;1a;0 the string a would be equal to "123,0" and string b would be equal to "aba,1a".

Input

The only line of input contains the string s (1 ≤ |s| ≤ 105). The string contains only symbols '.' (ASCII 46), ',' (ASCII 44), ';' (ASCII 59), digits, lowercase and uppercase latin letters.

Output

Print the string a to the first line and string b to the second line. Each string should be surrounded by quotes (ASCII 34).If there are no words that are numbers print dash (ASCII 45) on the first line. If all words are numbers print dash on the second line.

Example

Inputaba,123;1a;0Output"123,0""aba,1a"Input1;;01,a0,Output"1"",01,a0,"Input1Output"1"-InputaOutput-"a"

Note

In the second example the string s contains five words: "1", "", "01", "a0", "".

题意:

将以逗号、分号为分隔符的字符串中包含的正整数和单词提取出来,分两行输出。具体规则为:包含小数点的子串、带有字母的子串、带有前导零的子串、两个分隔符之间的空子串都记为单词,其余的记为整数。若不存在单词,或者不存在整数,就在对应的那行输出一个横线。

思路:

这是一道模拟题,如题意所说的那样来实现功能就行。值得注意的是第一个子串就是空串,以及最后一个子串是空串的情况,不要漏掉了。

#include <iostream>#include <cstdio>#include <string>#include <cctype>#include <vector>using namespace std;bool isDelimiter(char ch){    return ch == ';' || ch == ',';}int main(){#ifdef TESTfreopen("test.txt", "r", stdin);#endif // TEST    string sample;    while(cin >> sample){        vector<string> a, b;        bool inside = false, isWord = false, extra = false;        int len = sample.length();        string temp;        for(int i = 0; i < len; i++){            temp += sample[i];            if(!inside && i < len - 1 && !isDelimiter(sample[i+1]) && sample[i] == '0') // leading zero.                isWord = true;            inside = true;            if(!isWord && (sample[i] == '.' || isalpha(sample[i])))                isWord = true;            if(sample[i] == ';' || sample[i] == ',' || i == len-1){                if(isDelimiter(sample[i]))                    if(i < len-1)                        temp.erase(temp.end()-1);                    else{                        temp.erase(temp.end()-1);                        extra = true;                    }                inside = false;                if(isWord || temp.empty()){                    isWord = false;                    b.push_back(temp);                }                else                    a.push_back(temp);                if(extra)                    b.push_back("");                temp.clear();            }        }        if(a.size()){            cout << "\"";            for(int i = 0; i < a.size(); i++)                cout << a[i] << ",\""[i==a.size()-1];            cout << endl;        }        else            cout << "-" << endl;        if(b.size()){            cout << "\"";            for(int i = 0; i < b.size(); i++)                cout << b[i] << ",\""[i==b.size()-1];            cout << endl;        }        else            cout << "-" << endl;    }    return 0;}
原创粉丝点击