#贪心
在此提供一个题解区代码最短的简单解法。
## 题目大意
现在给你两个字符串 $S$ 和 $T$,你可以选择两种方式来完全匹配 $T$:
- 在 $S$ 里面取出一个长度为 $3$ 的子序列(可以不连续);
- 在 $S$ 里面取出一个长度为 $2$ 的子序列(同理),并在末尾加上 `X`。
输出能否完全匹配 $T$。
## 思路
首先,如果 $T$ 的末尾是 $X$,那么第二种方式才是有用的,在这种情况下我们只需要将 $T$ 的最后一个字符删掉来匹配就行了。
然后考虑取子序列,我们可以使用一个指针 $p$ 来描述字符串 $T$ 我们已经匹配到了多少位。遍历 $S$,如果当前字符能够继续匹配 $T$ 的话,那么就将指针右移,最后看一看有没有匹配完全即可。
## 代码
```kotlin
import java.util.*
val cin = Scanner(System.`in`)
val s = cin.next()
var t = cin.next()
var p = 0
fun main() {
if (t.last() == 'X') { // 如果末尾为 X
t = t.substring(0, t.length - 1) // 删掉最后一个
}
for (c in s) { // 遍历 S
if (p < t.length && c - 32 == t[p]) { // 如果没有超出限制并能继续匹配
p++ // 多匹配一个
}
}
// 最后判断一下匹没匹配完就行了
println(if (p == t.length) "Yes" else "No")
}
```