B站笔试 AC 2.8

做完了才发现只能用C++,字符串切分下午刚刚自己写过一个模板,恰好用上了。但是不知道为什么会有数组越界的情况。有谁AC了第三题么。能说一下要怎么修改么。#哔哩哔哩##笔试题目#
全部评论
第三题60怎么破
点赞 回复 分享
发布于 2019-09-10 20:27
同样85.75.。。。楼主怎么知道是数组越界的原因,我这没提示这个原因。。
点赞 回复 分享
发布于 2019-09-10 20:27
我用go直接傻眼了好吧
点赞 回复 分享
发布于 2019-09-10 20:27
第三题我开始也是0.8.。后来发现判断条件写错了。。 大于等于S就可以写成大于S了。。改了就AC了 顺便吐槽一下这样的代码题没啥区分度啊。。。
点赞 回复 分享
发布于 2019-09-10 20:29
不会c++真的哭了
点赞 回复 分享
发布于 2019-09-10 20:32
啊!哪里写着呢
点赞 回复 分享
发布于 2019-09-10 20:49
第三题要先判断长度小于等于4直接输出0,就可以AC了,可以看我帖子
点赞 回复 分享
发布于 2019-09-10 21:42
逐个扫,碰到 “:”记录位置,并且记录个数,碰到"#"或者到字符串末尾就代表获得了一个可能的KV串,然后判断 “:“ 的个数是否为1,KV串长度是否为空,就行了。不过我昨天只判断了V串是否为空,忘记判断K串了,竟然也AC了。。看到你这个问题再看了遍代码才发现的。。贴下代码 #include <iostream> #include <vector> using namespace std; int main() { char pd; char vd; string str; cin >> pd >> vd >> str; vector<pair<string, string>> kv; for (int i = 0; i < str.size();) { int start = i; int vd_pos = -1; int vd_count = 0; int j = i; for (; j < str.size(); ++j) { if (str[j] == vd) { vd_pos = j; ++vd_count; } else if (str[j] == pd) { break; } } if (vd_pos > start && j - 1 > vd_pos && vd_count == 1) { auto key = str.substr(start, vd_pos-start); auto value = str.substr(vd_pos + 1, j - 1-vd_pos); kv.emplace_back(key, value); } i = j + 1; } cout << kv.size() << endl; for (int i = 0; i < kv.size(); ++i) { cout << kv[i].first << " " << kv[i].second << endl; } }
点赞 回复 分享
发布于 2019-09-11 13:58

相关推荐

沟头学院:无关比赛不要写,这样会显着你主次不分,比赛不要撒谎,有哪些就写那些,创新创业建议删除。技能特长可以适当夸大。
点赞 评论 收藏
分享
评论
点赞
收藏
分享

创作者周榜

更多
牛客网
牛客企业服务