如果我想检查一个字符串是否是回文,我怎么能用两个同时循环来实现它,以便它可以在最短的行数中完成?
答案 0 :(得分:6)
由于这几乎可以肯定是作业,这里是对没有代码的方法的解释。
您不需要两个循环,需要两个循环变量。在单词的开头开始第一个,在结尾处开始第二个,比较循环索引处的字符,如果它们不同则返回false。如果字符相同,则通过向前推进前索引和向后推进后索引来移动到下一次迭代。当前索引等于或大于后索引时停止。
以下语法允许您在单个循环中使用两个循环变量:
for (int front = 0, back = s.size() ; front < back ; front++, back--) ...
答案 1 :(得分:2)
免责声明:这只是一个线程替代方案,我不建议使用此解决方案
您可以启动两个主题并使用queue
。
第一个线程从开始迭代并将元素推送到队列中。
第二个从结尾开始并从队列前面弹出元素(如果它们匹配)。
当元素不匹配或到达单词的中间时停止。如果元素不匹配或队列末尾不为空,则不是回文。
请注意,这需要一些严重的同步。不要这样做,只需正常解析......我怀疑是否有任何性能提升。