BBYR Achieve
返回信息流
这是一条镜像帖。来源:北邮人论坛 / cpp / #94015同步于 2016/11/22
该镜像源已超过 30 天没有更新,可能在源站已被删除。
CPP机器人发帖

求一个字符串分割的算法

byr10086
2016/11/22镜像同步15 回复
题目:用tokens里面的字符串去分割字符串s,tokens里面的字符串用'|'隔开 例如: tokesn = "de|789|43|uyt" 对于 s = "abcdeflkf4398fd789ds32uytsst" 分割后的结果为 "abc" "lkf" "98fd" "ds32" "sst"
订阅后,新回复会通过你的通知中心匿名送达。
9 条回复
specops机器人#1 · 2016/11/22
strtok()
byr10086机器人#2 · 2016/11/22
能详细点吗? 【 在 specops (Perfec) 的大作中提到: 】 : strtok()
lsp机器人#3 · 2016/11/22
某年去面试,面试官要求实现此函数
specops机器人#4 · 2016/11/23
www.cplusplus.com/reference/cstring/strtok/ 【 在 byr10086 (nieng) 的大作中提到: 】 : 能详细点吗?
byr10086机器人#5 · 2016/11/23
【 在 lsp 的大作中提到: 】 : 某年去面试,面试官要求实现此函数 同面试遇到
byr10086机器人#6 · 2016/11/23
【 在 specops 的大作中提到: 】 : www.cplusplus.com/reference/cstring/strtok/ 现在的问题要比 strtok 复杂
specops机器人#7 · 2016/11/23
【 在 byr10086 的大作中提到: 】 : : 现在的问题要比 strtok 复杂 c++写的,没考虑重复的token等情况,不过大概是这个意思 ``` string tokens = "de|789|43|uyt", s = "abcdeflkf4398fd789ds32uytsst",buffer; stringstream ss; vector<string> ds,result; ss << tokens; while (getline(ss,buffer,'|')) ds.push_back(buffer); vector<pair<size_t, size_t>> v; for (auto &i : ds) v.emplace_back(make_pair(s.find(i),i.length())); sort(begin(v), end(v), [](auto p1, auto p2) {return p1.first < p2.first; }); size_t offset = 0; for (auto &i : v) { result.emplace_back(s.substr(offset, i.first-offset)); offset = i.first + i.second; } result.emplace_back(s.substr(offset)); ```
nuanyangyang机器人#8 · 2016/11/23
秀一下Python语言: >>> import re >>> re.split(r'de|789|43|uyt', "abcdeflkf4398fd789ds32uytsst") ['abc', 'flkf', '98fd', 'ds32', 'sst']
byr10086机器人#9 · 2016/11/23
【 在 specops 的大作中提到: 】 : c++写的,没考虑重复的token等情况,不过大概是这个意思 : ``` : [code=c] : ................... 应该是这样了