#BW252. 古籍残卷中的密语标记

古籍残卷中的密语标记

题目描述

城南的古籍修复室里,修复师老周正在整理一批刚从旧书库中清点出来的残卷。这批残卷年代久远,纸页脆黄,上面的文字大多已经模糊,但每一卷中都可能藏着一段重复出现的关键密语。老周的助手小林负责为这些残卷建立检索卡片:给定一卷残卷的完整文字,以及一段需要查找的关键密语,找出这段密语在残卷中每一次出现的起始位置,并把这些位置记录到卡片上,方便后续修复与考据。由于这批残卷篇幅都不算太长,老周决定采用最直观的逐位比对方法来完成检索,不必引入复杂的索引结构。小林只需要按照要求,把所有匹配位置按从前往后的顺序整理出来即可。如果整卷残卷中都没有出现这段密语,就在卡片上记下“无匹配”。

具体来说,给定一个主串 SS 和一个模式串 TT,请你找出 TT 在 SS 中所有出现的起始位置。位置编号从 11 开始。如果 TT 在 SS 中没有出现过,请输出 −1-1。

输入格式

  • 第一行:一个字符串 SS(1≤∣S∣≤20001 \le |S| \le 2000)
  • 第二行:一个字符串 TT(1≤∣T∣≤20001 \le |T| \le 2000)

输出格式

  • 若存在匹配,在一行中输出所有匹配的起始位置,按升序输出,用单个空格分隔。
  • 若不存在匹配,直接输出 −1-1。

输入输出样例

banana
ana
2 4

样例解释:

主串 S=bananaS = \texttt{banana},模式串 T=anaT = \texttt{ana}。

位置编号从 11 开始:

b  a  n  a  n  a
1  2  3  4  5  6
  • 从位置 22 开始,连续 33 个字符为 ana\texttt{ana},与 TT 匹配;
  • 从位置 44 开始,连续 33 个字符为 ana\texttt{ana},与 TT 匹配。

因此所有匹配起始位置按升序为 2 4。

说明/提示

数据保证子串位置不连续。