给定一个由大写字母’A’、’B’、’C’构成的字符串s,按如下进行消除过程:

1、字符串s中连续相同字母组成的子串,如果子串的长度大于1,那么这些子串会被同时消除,余下的字符拼成新的字符串。

例如:”ABCCBCCCAA”中”CC”,”CCC”和”AA”会被同时消除,余下”AB”和”B”拼成新的字符串”ABB”。

2、反复进行上述消除,直到新的字符串中相邻字符都不相同为止。

例如:”ABCCBCCCAA”经过一轮消除得到”ABB”,再经过一轮消除得到”A”。

假设在对字符串s消除开始前,允许在s中任意位置(第一个字符之前、最后一个字符之后以及相邻两个字符之间)插入任意一个字符(‘A’,’B’或者’C’),得到字符串t,然后对字符串t经过一系列消除。

请问该如何插入字符,使得字符串t中被消除掉的字符总数(包括插入的字符)最多?

Input

第 1 行:整数 T (1≤T≤10) 为问题数。

第 2 ~ T+1 行:每个问题占一行,每行输入一个由’A’、’B’、’C’组成的字符串s,长度不超过100。

Output

对每个测试数据,首先输出一行问题的编号(0 开始编号,格式:case #0: 等)。在接下来一行中输出被消除掉的最大字符数。

Examples

Input
3
ABCBCCCAA
AAA
ABC
Output
case #0:
9
case #1:
4
case #2:
2

Note

第一组数据:在”ABCBCCCAA”的第2个字符后插入’C’得到”ABCCBCCCAA”,消除后得到”A”,总共消除9个字符(包括插入的’C’)。


 #include <iostream>
#include <string>
using namespace std;
string x[] = { "A","B","C" };
void del(int& ans,string tmp)
{
int len=tmp.size();
while()
{
int flag=;//判断是否可以继续消除
for(string::iterator it=tmp.begin(),t,s;it<tmp.end()-;)//小心it越界
if(*(it+)==*it)
{
flag=;
int x=it-tmp.begin();//x记录上次消除位置,以便从后继续消除
t=it;
while(it<tmp.end()-&&*(it+)==*it) it++;
tmp.erase(t,it+);
x=x<?:x;
it=tmp.begin()+x;
}
else it++;
if(flag==) break;
}
ans=ans>(len-tmp.size())?ans:len-tmp.size();
}
int main()
{
int T;cin>>T;
for(int m=;m<T;m++)
{
string s;cin>>s;
int ans=;
for(int i=;i<=s.size();i++)
{
for(int j=;j<;j++)
{
string tmp=s;tmp.insert(i,x[j]);
del(ans,tmp);
}
}
printf("case #%d:\n%d\n",m,ans); }
return ;
}

在字符串的每个空格(包括首尾)处插入A或B或C,消除连续相同字母组成的字串,判断无可消除字串后退出,经过几次比较,得出消除最多的字符个数。

注意是同时消除,因此应该在消除之后从消除的地方继续向后找字串,而不是从头开始找。

如ABCCBCCCAA,第一次消除CC,CCC,AA,而不是第一次消除得ABBCCCAA,然后继续消除BB,CCC,AAA,这样结果就是全部消除了,这也是我一开始WA的原因。

最新文章

  1. 【Android】Eclipse自动编译NDK/JNI的三种方法
  2. 关于大型网站技术演进的思考(二十一)--网站静态化处理—web前端优化—下【终篇】(13)
  3. Oracle 11g XE release2安装与指导
  4. getStyle(),修改样式属性
  5. linux(debian)下邮件发送
  6. 流媒体基础实践之——Nginx-RTMP-module 指令详解
  7. android 66 sharedperference的使用
  8. 有关Ant编译
  9. vim中选择匹配文本删除技巧
  10. 2048小游戏(C语言版)
  11. Date()创建日期
  12. 【MYSQL】ubuntu13安装mysql(转)
  13. 时序分解算法:STL
  14. Mysql锁机制--乐观锁 &amp; 悲观锁
  15. Python_Excel文件操作
  16. 第13章 Base64 URL编码 - IdentityModel 中文文档(v1.0.0)
  17. /etc/resolv.conf
  18. jquery :checked(过滤选择器) 和 空格:checked(后代选择器)【转】
  19. Python 爬取bangumi网页信息
  20. 使用HTML5 的跨域通信机制进行数据同步

热门文章

  1. hdu,1028,整数拆分的理解
  2. JAVA中EXTENDS 与 IMPLEMENT 区别
  3. mvc 类中对应数据库属性
  4. centos7 安装zabbix3.4
  5. 为什么阿里规约手册要求谨慎使用Arrays.asList方法
  6. CAD从线型文件加载线型记录(com接口)
  7. vc++6.0创建console32之.c的应用程序详解
  8. IDEA生成增强for循环
  9. Python学习【第7篇】:Python之常用模块2
  10. python中enumerate( )函数的使用