题解 | #参数解析#

参数解析

http://www.nowcoder.com/practice/668603dc307e4ef4bb07bcd0615ea677

我的思路比较简单也容易理解 给字符串里的每个字符标记属性flag

可以理解为

flag为0 即为文本字符 flag为1 即为分割字符

那么需要排除的就是引号内的空格,将其flag不置为1;

#include <iostream>
#include <vector>
#include <string>

using namespace std;

void cut(string str) {
    vector<string> result;
    int Qflag = 0;//未出现引号
    int length = str.size();
    int flag[1001] = {0};
    for (int i = 0; i < length; i++) {
        if (str[i] == '"') {
            flag[i] = 1;
            switch (Qflag) {
                case 0:
                    Qflag = 1;
                    break;
                case 1:
                    Qflag = 0;
                    break;
            }
        }
        if (str[i] == ' ') {
            if (Qflag == 0) {
                flag[i] = 1;
            }
        }
    }
    string temp = "";
    for (int i = 0; i < length; i++) {

        if (flag[i] != 1) {
            temp += str[i];
        } else {
            if (!temp.empty()) {
                result.push_back(temp);
            }
            temp = "";
        }
    }
    if (!temp.empty()) {
        result.push_back(temp);
    }
    cout << result.size() << endl;
    for (int i = 0; i < result.size(); i++) {
        cout << result[i] << endl;
    }
}

int main() {
    string str;
    while (getline(cin, str)) {
        cut(str);
    }
    return 0;
}

全部评论

相关推荐

不愿透露姓名的神秘牛友
07-25 17:55
点赞 评论 收藏
分享
06-02 15:17
门头沟学院 Java
心爱的idea:怎么会呢 应该是打招呼有问题 问就说实习6个月全国可飞随时到岗
点赞 评论 收藏
分享
06-08 22:25
门头沟学院 Java
从零开始的转码生活:这hr不会打开手机不分青红皂白给所有人群发这句话,过一会再给所有人再发一遍,这肯定会有重复的,不管,再过一会再发一遍
点赞 评论 收藏
分享
评论
2
收藏
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务