【发布时间】:2017-03-21 08:40:15
【问题描述】:
在我的项目中,我必须从 index=0 开始迭代一个大字符串并获取长度为 k 的子字符串。我已经实现了 string::substr() 并且想知道是否还有其他有效的方法。
例如:
std::string S ="ABCDEFGHIJKLMN"
我需要从 S 的开头获取长度 = 5 的所有子字符串。就像
"ABCDE"、"BCDEF"、"CDEFG"等等..
我的实现如下:
void geekfunc(std::string &str)
{
unsigned int index=0;
for (; index<=(str.size()-K);++index)
{
++myseqmap[str.substr(index,K)];
}
}
这个函数被调用千万次,欢迎其他方法尝试。
【问题讨论】:
-
我不明白您想要实现的目标:您想要输入字符串的所有长度为
k的子字符串吗? -
你想用这个函数解决的实际问题是什么?请花一些时间阅读 the XY problem 并思考它与您的问题有何关联。
-
为了更清楚,我已经编辑了问题。