【发布时间】:2021-05-17 10:27:09
【问题描述】:
假设我有像“0003443”这样的字符串,我们的目标是达到“3443”。我已经使用子字符串方法找出零的数量,但我想知道在 c++ 中执行此操作的最佳方法。
【问题讨论】:
-
但是我想知道最好的方法
-
你会发现“最优”并没有很好的定义。你的意思是最快的?如果是这样,数据看起来如何?你运行一次吗? 1e6 次?平均有多少个零?有多少个字符串没有前导零?你的主机有什么能力?你想使用 AVX 指令吗?如果是,那是什么样的指令?另一个可选的可能是最短的代码。
-
“最佳”可能是首先不生成带有不需要的前导零的字符串。然后不需要去除前导零,在这种情况下,去除前导零的步骤是无操作的,因此效率最佳。
-
找到零的数量,然后使用
substr对我来说是最佳选择。你能想到任何更优化的过程吗?当然,这完全取决于您所说的“最佳”是什么意思。我的感觉是,当初学者在没有定义任何这些术语的情况下问什么是最优化、最有效或最好的,这仅仅是因为他们对自己的代码缺乏信心。就好像他们认为有一些专家知道但他们不知道的秘密技巧。