hacked吧 关注:609贴子:1,511
  • 3回复贴,共1
在A man,a plan,a canal:Panama这一关,以下代码可行,但怎么理解?
foreach var_a in input {
if var_a != input.pop {
return false;
}
}
true;


IP属地:山东来自手机贴吧1楼2017-02-03 12:55回复
    是否是回文


    来自手机贴吧2楼2017-02-21 10:00
    回复
      2025-08-09 16:28:20
      广告
      不感兴趣
      开通SVIP免广告
      每次都是拿当前值和当前数组最后一个值比较,自然的形成了对称比较
      比如数组长5
      第一次循环比较第一个和第五个(第五个弹出,数组长度变为4)
      第二次循环比较第第二个和第四个(第四个弹出,数组长度变为3)
      第三次就结束了,因为只有一个
      好处是效率高,逻辑上和回文的对称定义一致
      但是现实编程不建议用,因为当你将input进行foreach后,就是对其进行迭代,你做的操作实际上是在迭代过程中修改迭代对象本身,可能会导致问题。当然这个问题本身应该是ok的,因为整个迭代过程到终点时访问的路径(1-2-3)和不删除尾部的顺序是一致的,但是如果你迭代到1时候删除2,后面的逻辑就很迷了


      IP属地:湖北3楼2018-10-17 23:35
      回复(1)