题目描述
给定一个字符串,要求通过**连续递增或者连续递减的关系**将其表示出来。
所有给定的字符可分为**大写字母**、**小写字母**及**数字**三个组别,每个组别内部的字符编号按照字典序从小到大排序,并定义各组别间的编号关系为:$\text{大写字母} \lt \text{小写字母} \lt \text{数字}$。因此可以发现 `A` 的编号最小,我们假定为 $1$,那么 `Z` 的编号便是 $26$,`a` 的编号便是 $27$,`0` 的编号便是 $53$,而 `9` 的编号最大,为 $62$.
我们定义一段字符串是**连续递增**的,当且仅当在这个字符串中,后一个字符的编号**严格为**前一个字母编号 $+1$;反之,定义一段字符串是**连续递减**的,当且仅当后一个字符的编号**严格为**前一个字母编号 $-1$。例如,`abcde`、`YZa` 是连续递增的,`fedc`、`0zyx` 是连续递减的,而 `abde`、`abccd`、`edcde`、`AbC` 这些既不是连续递增的也不是连续递减的。
如果一段字符串是连续递增的,且以 $\text{x}$ 开头,以 $\text{y}$ 结尾($\text{x}$ 和 $\text{y}$ 为任意单个字符,但并非指代 `x` 和 `y` 这两种字符),我们便可以将其表示成 `[xy]` 的格式;而如果一段字符串是连续递减的,则可以表示成 `(xy)` 的格式。例如,`abcde` 是连续递增的,可以用 `[ae]` 来表示;`fedc` 是连续递减的,可以用 `(fc)` 来表示。
特殊的,`abde` 这一整段字符串虽然不是连续递增的,但可以表示成两段连续递增的子串 `ab` 和 `de`,故可以用 `[ab][de]` 来将其表示出来;同理 `abccd` 可以表示为 `[ac][cd]`,因为两个相邻的 `c` 没有任何递增或递减的关系;如果只是单个字符 `e`,则直接用该字符 `e` 表示即可。
需要注意的是,像是 `edcde` 这种情况,字符 `c` 既可以算是连续递减子串的末字符,也可以算是其后连续递增子串的首字符。对于这种双义情况,我们认定其应当包含于**靠前**的表示方案中,即 `edcde` 应当表示为 `(ec)[de]`。
输入格式
第一行包含一个整数 $T$ $(1 \le T \le 1000)$,表示测试数据组数。
每组数据占一行,包含一个字符串 $S$ $(1 \le |S| \le 200)$.
输出格式
对于每组数据,在一行中输出一个字符串,为原字符串的连续表示法。
样例输入 #1
11
abcde
fedc
abde
abccd
edcde
edcccba
AabB
1212121
1145141919810
Zack
StElAyUrI
样例输出 #1
[ae]
(fc)
[ab][de]
[ac][cd]
(ec)[de]
(ec)c(ca)
A[ab]B
[12][12][12]1
11[45]14191(98)(10)
[Za]ck
StElAyUrI
来源
2023-04-16 ZJNU 天梯赛模拟场 L2-3