如何同时运行两个循环 - C ++?

时间:2012-07-17 19:32:55

标签: c++ loops

如果我想检查一个字符串是否是回文,我怎么能用两个同时循环来实现它,以便它可以在最短的行数中完成?

2 个答案:

答案 0 :(得分:6)

由于这几乎可以肯定是作业,这里是对没有代码的方法的解释。

您不需要两个循环,需要两个循环变量。在单词的开头开始第一个,在结尾处开始第二个,比较循环索引处的字符,如果它们不同则返回false。如果字符相同,则通过向前推进前索引和向后推进后索引来移动到下一次迭代。当前索引等于或大于后索引时停止。

以下语法允许您在单个循环中使用两个循环变量:

for (int front = 0, back = s.size() ; front < back ; front++, back--) ...

答案 1 :(得分:2)

免责声明:这只是一个线程替代方案,我不建议使用此解决方案

您可以启动两个主题并使用queue

第一个线程从开始迭代并将元素推送到队列中。

第二个从结尾开始并从队列前面弹出元素(如果它们匹配)。

当元素不匹配或到达单词的中间时停止。如果元素不匹配或队列末尾不为空,则不是回文。

请注意,这需要一些严重的同步。不要这样做,只需正常解析......我怀疑是否有任何性能提升。