laocaiye 发表于 2025-10-6 21:54:09

关于第33讲序列(上)动动手作业0的实现

本作业的答案,版主是用双指针实现的,一般双指针实现都较难理解。我这里提供另外一种方法,感觉要好理解些。

#程序实现说明:按顺序比较s中的各字符在t中的索引位置,如果符合从小到大的顺序,说明s即为t的子串

s = input("请输入字符串s:")
t = input("请输入字符串t:")
index=t.find(s)
for c in s:
    if t.find(c) < index:
      print("字符串 s 不是字符串 t 的子序列")
      break
    else:
      index = t.find(c)
else:
    print("字符串 s 是字符串 t 的子序列")

jackz007 发表于 2025-10-6 23:10:30

本帖最后由 jackz007 于 2025-10-6 23:39 编辑

s = input("请输入字符串s:")
t = input("请输入字符串t:")
if 0 < len(s) <= len(t) :
    index = 0
    for c in s :
      index = t . find(c , index)
      if index < 0 :
            print('%s 不是 %s 的子串' % (s , t))
            break
    else:
      print('%s 是 %s 的子串' % (s , t))

【运行实况】:
D:\\\\FishC.substr>python x.py
请输入字符串s:ace
请输入字符串t:abcde
ace 是 abcde 的子串

D:\\\\FishC.substr>python x.py
请输入字符串s:aec
请输入字符串t:abcde
aec 不是 abcde 的子串

D:\\\\FishC.substr>

laocaiye 发表于 2025-10-7 09:11:51

大神就是大神。因为我只是考虑练习,没去考虑第一步的容错处理。但是每次查找起点没考虑充分,谢谢!
页: [1]
查看完整版本: 关于第33讲序列(上)动动手作业0的实现