问题描述
给定一个长度为 N 的小写英文字母组成的字符串 S。判断是否可以将 S 分割为两个或更多连续的子字符串,使它们在词典顺序上严格递增。
准确地说,确定是否存在一个字符串序列 t=(t1,t2,dots,tk) 满足以下所有条件。
-
序列的长度 k 至少为 2。
-
ti 不为空。(1leilek)
-
按照顺序连接 t1,t2,dots,tk 得到 S。
-
对于每个满足 1lei<k 的整数 i,ti 在词典顺序上严格小于 ti+1。
给定 T 个测试用例,请找出每个测试用例的答案。
什么是词典顺序?
如果字符串 S=S1S2ldotsS∣S∣ 满足以下两个条件之一,则称其词典顺序小于字符串 T=T1T2ldotsT∣T∣。这里,∣S∣ 和 ∣T∣ 表示 S 和 T 的长度。
- ∣S∣lt∣T∣ 并且 S1S2ldotsS∣S∣=T1T2ldotsT∣S∣。
- 存在 1leqileqminlbrace∣S∣,∣T∣rbrace,满足以下两个条件。
- S1S2ldotsSi−1=T1T2ldotsTi−1。
- 字符 Si 在字母表中排在 Ti 之前。
约束条件
- 1leTle2000
- 2leNle2000
- S 是由小写英文字母组成的长度为 N 的字符串。
- 单次输入中所有测试用例的 N 的总和不超过 2000。
输入
从标准输入读取输入,其格式如下:
T
mathrmcase1
mathrmcase2
vdots
mathrmcaseT
这里,mathrmcasei 表示第 i 个测试用例。每个测试用例的格式如下:
N
S
输出
输出 T 行。
第 i 行 (1leileT) 应输出 Yes
,如果可能将第 i 个测试用例中的 S 划分为满足条件的子字符串,则输出 Yes
;否则输出 No
。
示例输入 1
5
4
abac
3
cac
2
ab
12
abababababab
5
edcba
示例输出 1
Yes
No
Yes
Yes
No
对于第一个测试用例,可以将 S 划分为 a
, ba
, c
。
对于第二个测试用例,无法将 S 划分为满足条件的子字符串。