#C07TL01P05. C07T.L01.实战训练一.题目5.回文串
C07T.L01.实战训练一.题目5.回文串
题目描述
有一个长度为 n 的字符串 S ,它全部由小写英文字母构成。
小明希望把 S 变成回文串,所以他打算采取删除 S 的若干字母,使得剩下的字母构成的字符串是回文串,但是删除操作必须同时满足如下两个条件:
-
只能删除同一种类型的字母,例如:只能删除字母 'a' , 不能既删除 'a' 又删除 'b' 。
-
小明希望删除的字母的数量尽可能少。
问:小明至少删除多少个字母才能完成任务?如果不可能完成任务,输出 -1 。
输入格式
多组测试数据。
第一行,一个整数 G ,表示有 G 组测试数据 ( 1 <= G <= 100 );
每组测试数据格式如下:
第 1 行,一个整数 n ( 1 <= n <= 100000 )
第 2 行,一个字符串 S ,长度不超过 100000 。
数据保证:所有 G 组测试数据的 n 的总和不超过 200000 。
输出格式
共 G 行,每行一个整数。
样例
5
8
abcaacab
6
xyzxyz
4
abba
8
rprarlap
10
khyyhhyhky
2
-1
0
3
2
样例解释
对字符串 "abcaacab" 的处理解释:
方案 1 : 你可以删除 'a' 这种类型的字母,删除 S 的第一个 'a' 和最后一个 'a' 。
方案 2 : 你可以删除 'b' 这种类型的字母,把 S 的所有 'b' 都删除。
不管是方案 1 还是方案 2 ,都是删除两个字母。
相关
在以下作业中: