c/c++从子字符串变体中生成不同的字符串
c/c++ produce different string(s) from substring variations
假设我们有I have/had alot/none/zero money
形式的输入字符串。
我想要一组输出字符串如下(示例1):
I have alot money
I have none money
I have zero money
I had alot money
I had none money
I had zero money
但是,这里真正的任务是能够选择一个或多个,或者不选择要忽略的输入子字符串。因此,输出字符串如下所示:
I money
或
first example
或
I alot money
I none money
I zero money
或
I
或
money
我希望你明白了。我怎样才能做到这一点,对cpu周期最友好?
好吧,为了打破僵局,这是我不愿意做的,但考虑到更光明的想法:
- 生成所有输出字符串(前面提到的示例1)
- 通过遍历字符串,我筛选出符合条件的字符串,用"替换不需要的子字符串
- 只有在最终输出数组中还没有字符串的情况下,才将结果字符串放入该数组
此外,我为什么关心cpu周期的答案很简单:这个任务花费的时间越长,它阻塞工作线程的时间就越长。
这个最简单的方法是找到所有的空格和/字符,并将单个单词放入两级列表中,然后得到这样的结构:
- I
- 曾经
- 很多,没有,零
- 金钱
现在您只需循环遍历树并生成一个结果字符串。
为了将其推向极端,您还可以编写一个令牌解析器,而不是执行strchr。
如何以对cpu周期最友好的方式做到这一点?
你为什么在乎?