请教大家关于循序处理输入的一个问题

我在做华为的以下编程题时:
自测一个案例的话都能通过,但是提交时,输出多了一部分,应该是循环输入的问题,我应该怎么修改呢?我的代码如下:

但是提交时:

 #include<iostream>
#include<sstream>
#include<string>
#include<vector>
#include<algorithm>
#include<map>
using namespace std;
void split(const string &src, vector<int>& dest, const char& delimiter) {
    dest.clear();
    istringstream iss(src);
    string tmp;
    while (getline(iss, tmp, delimiter)) {
        dest.push_back(stoi(tmp));//记得转化为int
    }
}
bool IsSubStr(int text, int pattern) {
    string t = to_string(text);
    string p = to_string(pattern);
    if (t.size() < p.size())
        return false;
    size_t idx = t.find(p);
    if (idx != string::npos) {//查找成功
        return true;
    }
    else
        return false;
}


int main()
{
    string I;
    string R;

    while (getline(cin, I)) {
        getline(cin, R);
        vector<int> Ivec;
        vector<int> Rvec;
        map<int, vector<int>> records;
        //注意,vector的第一个数据为个数
        split(I, Ivec, ' ');//提取数据至对应的vector
        split(R, Rvec, ' ');
        //对Rvec进行排序,sort时,不要对第一个元素进行sort
        sort(Rvec.begin() + 1, Rvec.end());
        for (size_t i = 1;i < Rvec.size();++i) {//注意跳过第一个数
            int pattern = Rvec[i];
            int matchCnt = 0;//统计有多少个匹配
                             //如果有重复的R,则跳过
            if (records.find(pattern) != records.end())
                continue;
            for (size_t j = 1;j < Ivec.size();++j) {
                int text = Ivec[j];//主串
                if (IsSubStr(text, pattern)) {
                    ++matchCnt;
                    records[pattern].push_back(j-1);//保存相应下标
                }
            }
        }
        //输出:
        int sum = 0;
        for (auto iter = records.begin();iter != records.end();++iter) {
            sum += 2 + (*iter).second.size() * 2;//R[I],对应VECTOR的大小,对应的下标和元素
        }
        cout << sum << " ";
        //map本身就排好序
        for (auto iter = records.begin();iter != records.end();++iter) {
            
            cout << iter->first << " " << iter->second.size() << " ";
            //遍历容器
            for (size_t i = 0;i < iter->second.size();++i) {
                cout << iter->second[i] << " " << Ivec[iter->second[i]+1] << " ";
            }
        }
    }




    return 0;
}

全部评论
首先你的代码没有错误 测试不通过是因为getline需要两个【回车键】才能输出
点赞 回复 分享
发布于 2019-04-06 09:51

相关推荐

有趣的牛油果开挂了:最近这个阶段收到些杂七杂八的短信是真的烦
点赞 评论 收藏
分享
牛客279957775号:铁暗恋
点赞 评论 收藏
分享
评论
点赞
收藏
分享
正在热议
# 25届秋招总结 #
440577次浏览 4493人参与
# 春招别灰心,我们一人来一句鼓励 #
41484次浏览 524人参与
# 北方华创开奖 #
107311次浏览 599人参与
# 地方国企笔面经互助 #
7928次浏览 18人参与
# 同bg的你秋招战况如何? #
75577次浏览 552人参与
# 虾皮求职进展汇总 #
114215次浏览 884人参与
# 阿里云管培生offer #
119864次浏览 2219人参与
# 实习,投递多份简历没人回复怎么办 #
2454001次浏览 34848人参与
# 实习必须要去大厂吗? #
55678次浏览 960人参与
# 提前批简历挂麻了怎么办 #
149825次浏览 1977人参与
# 投递实习岗位前的准备 #
1195707次浏览 18546人参与
# 你投递的公司有几家约面了? #
33180次浏览 188人参与
# 双非本科求职如何逆袭 #
661910次浏览 7394人参与
# 如果公司给你放一天假,你会怎么度过? #
4730次浏览 55人参与
# 机械人春招想让哪家公司来捞你? #
157604次浏览 2267人参与
# 如果你有一天可以担任公司的CEO,你会做哪三件事? #
11365次浏览 270人参与
# 发工资后,你做的第一件事是什么 #
12418次浏览 61人参与
# 工作中,努力重要还是选择重要? #
35612次浏览 384人参与
# 参加完秋招的机械人,还参加春招吗? #
20091次浏览 240人参与
# 我的上岸简历长这样 #
451924次浏览 8088人参与
# 实习想申请秋招offer,能不能argue薪资 #
39235次浏览 314人参与
# 非技术岗是怎么找实习的 #
155850次浏览 2120人参与
牛客网
牛客企业服务