【发布时间】:2020-06-27 15:19:59
【问题描述】:
练习要求我编写一个程序。它写了
"给定一个字符串s和一个字符串t,检查s是否是t的子序列。
例如:"ac", "abcd" => True。”
所以我写了这个:
def isSubsequence(s, t):
s, t = map(list, [s, t])
for c in t:
if c in s:
s.pop(0)
return not s
在大多数情况下都可以正常工作,除了一种情况:
s = "rjufvjafbxnbgriwgokdgqdqewn"
t = "mjmqqjrmzkvhxlyruonekhhofpzzslupzojfuoztvzmmqvmlhgqxehojfowtrinbatjujaxekbcydldglkbxsqbbnrkhfdnpfbuaktupfftiljwpgglkjqunvithzlzpgikixqeuimmtbiskemplcvljqgvlzvnqxgedxqnznddkiujwhdefziydtquoudzxstpjjitmiimbjfgfjikkjycwgnpdxpeppsturjwkgnifinccvqzwlbmgpdaodzptyrjjkbqmgdrftfbwgimsmjpknuqtijrsnwvtytqqvookinzmkkkrkgwafohflvuedssukjgipgmypakhlckvizmqvycvbxhlljzejcaijqnfgobuhuiahtmxfzoplmmjfxtggwwxliplntkfuxjcnzcqsaagahbbneugiocexcfpszzomumfqpaiydssmihdoewahoswhlnpctjmkyufsvjlrflfiktndubnymenlmpyrhjxfdcq"
我不知道为什么我的代码在这个上不起作用。所以如果有人知道答案,请告诉我。
【问题讨论】:
-
您的代码正在测试
s中的每个字符是否也在t中以任意顺序 -- 这是一个简单的示例:isSubsequence('ab', 'acb')=>True.在 Python 中有更简单的测试序列成员资格的方法,但由于这是一个练习,我不会只告诉你 ;-) -
为什么
s.pop(0)?! -
@Juniktw 我建议你看一个更简单的例子,比如
isSubsequence('ab', 'bb')。您的代码目前为此返回True,这显然不是预期的结果... -
是的,它适用于简单的测试用例,但不适用于上述较大的测试用例。
-
@Juniktw 不,它不适用于那种简单的情况。它应该返回
False,因为'ab'显然不是'bb'的子序列。
标签: python python-3.x string