有没有办法找到一个整数是否出现在另一个整数中?例如,如果给出两个整数A和B.整数A出现在位置P的整数B中,然后应该返回最左边的位置。
例如,53位于1953786的2位,因此该函数应返回2.
答案 0 :(得分:9)
将两者都转换为字符串:
b = 1953786
a = 53
str(b).index(str(a))
# 2
请注意,如果有多个,则仅查找第一个匹配项。
@ user2357112指出道路上有两个可能的颠簸:
搜索不是线性时间。运行时特性非常复杂 - 如果实现使用的某些速度技巧可以解决,那么它比线性更好,而在坏情况下则是二次的。 [直接引用]
在二次时间场景中,str()
构造函数本身会因非常大的整数而遇到麻烦。
答案 1 :(得分:2)
我误解了原来的问题。如果您想知道所有事件而不是第一次,您可以这样做:
import re
a=1553545355343
b=53
all_ocurrences = [m.start() for m in re.finditer(str(b), str(a))]
print(all_ocurrences)
#[2, 6, 9]
如果你只关心第一个最左边的位置,你可以去找布拉德的答案。
答案 2 :(得分:0)
添加到Brad answer时,str.index()
会在找不到子字符串时引发ValueError
。如果不希望这样,您可以使用str.find()
,它会在失败时返回-1
:
>>> a, b = map(str, [53, 1953786])
>>> b.index(a)
2
>>> b.find(a)
2
>>> b.index("52")
Traceback (most recent call last):
File "<stdin>", line 1, in <module>
ValueError: substring not found
>>> b.find("52")
-1
有关运行时特性的说明也适用于此处。