Python 判断子序列

该博客介绍了一种利用双指针法判断一个字符串是否为另一个字符串子序列的算法。通过追踪指针j和k,依次比较字符串s和t的字符,允许在t中删除一些字符以匹配s。当j等于s的长度时,表明s是t的子序列。这种方法简洁且高效。
摘要由CSDN通过智能技术生成

判断子序列版权属于:

https://fishc.com.cn
O#.s-*T;S[48tvmGw>dF6}=gpR
给定字符串 s 和 t ,请编程判断 s 是否为 t 的子序列。79g)=Tx
|`v{<8FB,hmIkQ9LAS!y?*M'qR[~pn
字符串的子序列是原始字符串删除一些(也可以不删除)字符而不改变剩余字符相对位置形成的新字符串(例如,"ace" 是 "abcde" 的子序列,而 "aec" 则不是)。_(I<y&mnD 

s = input("请输入字符串s:")
t = input("请输入字符串t:")
    
n = len(s)
m = len(t)
    
j = k = 0
while j < n and k < m:
    if s[j] == t[k]:
        j += 1
    k += 1
    
if j == n:
    print("字符串 s 是字符串 t 的子序列。")
else:
    print("字符串 s 不是字符串 t 的子序列。")

解题思路是利用了 “双指针” 追踪的方法。YpO(HLaz
,LKfqkGJ YXQ?3`|D5:@
j 和 k 是两个负责追踪匹配的指针,分别指向字符串 s 和 t 的初始位置,然后每次判断 s[j] 与 t[k] 是否相等,如果相等则两个追踪指针同时移动到下一个位置继续判断。UAS&W
OJAG|~W<*Zo`PMTCE0X$lp #e.Id}V
由于 “子序列” 的判定是允许中间 “删除一些字符”,因此每当 s[j] 与 t[k] 不相等的时候,k 指针移动到下一位,继续尝试匹配。"vk^R6
O_)ISH=#|RdY$(ah}Uv@>iN -lrEx
最终如果 j 等于字符串 s 的长度,也就说明了 s 整个字符串成功地被遍历了一遍,即证明 s 是 t 的子序列。 DIMhCe|*
7>o}-XD)SdJ9x5%t~(L?ym*@86

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值