返回
Python 实现 LeetCode 392:判断子序列
后端
2023-11-21 10:56:32
LeetCode 392:判断子序列
LeetCode 392:判断子序列考察的是一个字符串是否时另一个字符串的子序列。
给定字符串 s 和 t,判断 s 是否是 t 的子序列。
子序列定义为:一个字符串从不改变排列顺序,而只删除某些字符的结果。
例如,"abc" 是 "ahbgdc" 的子序列,因为我们可以从 "ahbgdc" 中删除字符 'h', 'g', 'd' 来得到 "abc"。
示例 1:
输入:s = "abc", t = "ahbgdc"
输出:true
示例 2:
输入:s = "axc", t = "ahbgdc"
输出:false
示例 3:
输入:s = "", t = "ahbgdc"
输出:true
示例 4:
输入:s = "abc", t = ""
输出:false
Python 实现
def is_subsequence(s, t):
"""
判断 s 是否是 t 的子序列。
参数:
s (str): 子序列。
t (str): 字符串。
返回:
bool: 如果 s 是 t 的子序列,则返回 True,否则返回 False。
"""
# 特殊情况:
# 如果 s 为空字符串,则它是任何字符串的子序列。
if not s:
return True
# 如果 t 为空字符串,则 s 不可能是 t 的子序列。
if not t:
return False
# 初始化两个指针,分别指向 s 和 t 的第一个字符。
s_index = 0
t_index = 0
# 循环遍历 t 字符串。
while t_index < len(t):
# 如果 s 的当前字符与 t 的当前字符相等,则移动 s 的指针。
if s[s_index] == t[t_index]:
s_index += 1
# 如果 s 的指针已经到达末尾,则说明 s 是 t 的子序列。
if s_index == len(s):
return True
# 否则,移动 t 的指针。
t_index += 1
# 如果 s 的指针还没有到达末尾,则说明 s 不是 t 的子序列。
return False
# 测试用例
s1 = "abc"
t1 = "ahbgdc"
print(is_subsequence(s1, t1)) # True
s2 = "axc"
t2 = "ahbgdc"
print(is_subsequence(s2, t2)) # False
s3 = ""
t3 = "ahbgdc"
print(is_subsequence(s3, t3)) # True
s4 = "abc"
t4 = ""
print(is_subsequence(s4, t4)) # False
输出:
True
False
True
False
总结
在本文中,我们详细讲解了如何使用 Python 实现 LeetCode 392:判断子序列。我们提供了详细的代码示例和测试用例,帮助您更好地理解算法的实现。如果您有任何问题,请随时提出。