gpt4 book ai didi

python - 如何检测一个字符串是否同时包含另一个字符串中的所有元素,同时它们的出现顺序?

转载 作者:太空宇宙 更新时间:2023-11-04 00:25:53 25 4
gpt4 key购买 nike

我需要检测字符串'Relim'的元素是否都在字符串'Berkelium'中,同时检测中的每个字母'Relim' 按顺序出现在字符串 'Berkelium' 中。例如,'Relim' 在 'Berkelium' 而出现 '>Relim'按顺序排列在'Berkelium'。

我的主要想法是遍历字符串'Berkelium',然后一一检查'Berkelium'中的字符是否等于字符串中的元素'Relim',如果是,记录这个字符'Relim'的索引。在 for 循环之后,检查所有元素 'Relim' 是否都出现在 'Berkelium' 中并且也是按升序排列。由于我遍历了字符串 'Berkelium',因此我可以确保字母的出现顺序,但问题是 'e' 中有两个 code>'Berkelium',我的代码不起作用。任何人都可以对此有想法吗?

    string1 = 'Relim'
string2 = 'Berkelium'
index = []
for i, char1 in enumerate(string2):

for j, char2 in enumerate(string1):

if char1 == char2:
index.append(j)
if sorted(index) == index and len(index) == len(string1):
result = True
else:
result = False

最佳答案

据我了解,您希望按顺序在 s2 中查找 s1 中的每个字符。因此,对于 s1 中的每个字符,搜索 s2 直到找到相同的字符或用完。我认为大小写无关紧要。

def s_in_s(s1, s2):
s1 = s1.lower()
s2it = iter(s2.lower())
for c1 in s1:
for c2 in s2it:
if c2 == c1:
break
else:
return False
return True

print(s_in_s('Relim', 'Berkelium'))

这将按原样返回 True,不调用 .lower() 则返回 False。

编辑:添加更多测试用例

for seek in ('', 'r', 'BM', 'relim', 'berkelium'):
print(s_in_s(seek, 'Berkelium')) # should all be True
print()
for seek in (' ', 'x', 'BMx', 'berkeslium'):
print(s_in_s(seek, 'Berkelium')) # should all be False

关于python - 如何检测一个字符串是否同时包含另一个字符串中的所有元素,同时它们的出现顺序?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47481607/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com