信息技术来源:浙江强基联盟2026年3月高三联考
第 10 题
答案与解析
本题解析
参考答案
C
程序分析
i, j = 0, 0
while j < len(t):
if i < len(s) and s[i] == t[j]:
i += 1
j += 1
elif j > 0 and ①:
j += 1
else:
return False
return ②i、j 从两个字符串的首字符开始。若 s[i] 与 t[j] 相同,就同时移动两个下标,完成一次原字符的匹配。因此 i 指向 s 中下一个待匹配字符,j 指向 t 中下一个待检查字符。
只有不能按第一分支匹配时,才进入 elif 判断;该分支仅移动 j,不消耗 s 中的新字符。否则函数立即返回 False。循环由 j 控制,正常结束只说明 t 已检查完,最终返回值还需结合 s 的匹配进度确定。
填空分析
①
题目只允许把原字符连续重复,不能任意增加其他字符。第一分支无法匹配时,当前 t[j] 若是前一个字符的重复,就可以只移动 j。因此应判断 t[j] == t[j-1];已有的 j > 0 保证前一个字符存在。填写 t[j] == t[j-1]。
②
每个原字符都至少要在 t 中出现一次,所以 t 检查完后,还必须保证 s 已全部匹配,即 i == len(s)。若直接返回 True 或只判断 j == len(t),就会把 s='aba'、t='aa' 这类遗漏原字符的情况误判为拉伸版:此时 t 已检查完,但 i 仍为 1。填写 i == len(s)。
问题反馈
解析有疑问或显示异常?请先复制题目信息,再打开反馈表单填写。
题目编号:2026_03_G3_qiangjilianmeng_q010
