c/c++从子字符串变体中生成不同的字符串

c/c++ produce different string(s) from substring variations

本文关键字:字符串 c++      更新时间:2023-10-16

假设我们有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. 生成所有输出字符串(前面提到的示例1)
  2. 通过遍历字符串,我筛选出符合条件的字符串,用"替换不需要的子字符串
  3. 只有在最终输出数组中还没有字符串的情况下,才将结果字符串放入该数组

此外,我为什么关心cpu周期的答案很简单:这个任务花费的时间越长,它阻塞工作线程的时间就越长。

这个最简单的方法是找到所有的空格和/字符,并将单个单词放入两级列表中,然后得到这样的结构:

  • I
  • 曾经
  • 很多,没有,零
  • 金钱

现在您只需循环遍历树并生成一个结果字符串。

为了将其推向极端,您还可以编写一个令牌解析器,而不是执行strchr。

如何以对cpu周期最友好的方式做到这一点?

你为什么在乎?