-5

就像我想检查一个字符串是否是回文一样,我如何使用两个同时循环来实现它,以便它可以在最短的行数内完成?

4

2 回答 2

6

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

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

这是允许您在单个循环中使用两个循环变量的语法:

for (int front = 0, back = s.size() ; front < back ; front++, back--) ...
于 2012-07-17T19:38:03.460 回答
2

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

您可以启动两个线程并使用queue.

第一个线程从头开始迭代并将元素推入队列。

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

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

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

于 2012-07-17T19:42:03.743 回答