📅  最后修改于: 2023-12-03 15:26:36.932000             🧑  作者: Mango
有一个由小写字母组成的按字典顺序递增的字符串序列,现在给你两个字符串 S 和 T,请你找出在从 S 到 T 的字符串序列中间的所有字符串。
可以将 S 和 T 分别转成数字,然后从 S 到 T 枚举每一个数字,再将其转成对应的字符串。
代码如下:
def get_middle_strings(s, t):
res = []
for i in range(ord(s), ord(t)+1):
res.append(chr(i))
return res[1:-1] if len(res) > 2 else []
可以从头开始比较 S 和 T 的每一位,找到它们第一个不相同的位置 k,然后根据 S[k] 和 T[k] 之间的大小关系,确定从 S 到 T 中哪些字符串会被包含在结果中。
代码如下:
def get_middle_strings(s, t):
res = []
i = 0
while i < len(s) and i < len(t):
if ord(s[i]) + 1 < ord(t[i]):
for j in range(ord(s[i])+1, ord(t[i])):
res.append(chr(j))
return res
elif s[i] != t[i]:
return res
i += 1
return res
以上两种方法的时间复杂度均为 $O(|S-T|)$,其中 $|S-T|$ 是字符串 S 和 T 的长度之差。