Skip to content

04018: 子串

http://cs101.openjudge.cn/practice/04018/

字符串s和t均由字母组成,若在t中除去一些字母能够得到s,我们就说s是t的一个子串。比如abc就是acbefc的子串 (acbefc去掉第二、第四、第五个字符后就得到abc)

输入

有若干组输入数据,每组一行,分别为字符串s和t,s与t之间用空格隔开

输出

对于一组s与t,若s是t的子串,则输出Yes,否则输出No

样例输入

sequence subsequence
abc acb
VERDI vivaVittorioEmanueleReDiItalia

样例输出

Yes
No
Yes
python
while True:
    try:
        # 读取输入的一行数据
        s, t = input().split()
        # 初始化两个指针,分别指向 s 和 t 的起始位置
        i, j = 0, 0
        while i < len(s) and j < len(t):
            # 如果当前 s 和 t 指向的字符相同,则 s 的指针后移一位
            if s[i] == t[j]:
                i += 1
            # 无论是否匹配,t 的指针都后移一位
            j += 1
        # 如果 s 的指针移动到了 s 的末尾,说明 s 是 t 的子串
        if i == len(s):
            print("Yes")
        else:
            print("No")
    except EOFError:
        # 遇到文件结束符时退出循环
        break