【发布时间】:2019-07-02 19:17:52
【问题描述】:
我无法理解为什么 issup("oFB","FooBar") 返回 False。 iter(t) 在这个循环中表现如何?
参考这个 https://leetcode.com/problems/camelcase-matching/ https://leetcode.com/problems/camelcase-matching/discuss/270029/JavaC%2B%2BPython-Check-Subsequence-and-Regax
我猜iter(t) 从"FooBar" 开始,然后在下一次迭代中转到"ooBar",依此类推。
def issup(s, t):
it = iter(t)
return all(c in it for c in s)
【问题讨论】:
-
不,
iter在容器上返回一个迭代器,或者如果您在迭代器上调用iter,它应该只返回迭代器本身。这将是单程。 -
这里不需要
iter。只需使用return all(c in t for c in s)或return set(s) <= set(t) -
另外,请不要提供链接来替代问题描述,请在问题中自己描述您试图解决的问题跨度>
-
@0x5453 确实,这取决于您要执行的操作,
iter这里会使此错误。因为迭代器是单遍的,它只会为x in it返回True恰好一次,所以如果s的长度大于1,函数将始终返回错误 -
iter仅供一次性使用!一旦它被遍历,它里面就没有矿石元素了。o in it将迭代器推进到第四个位置,之后没有F。只有当s中的字符在t中以正确的顺序出现时,您的函数才会返回True。
标签: python python-3.x list loops