【HIHOCODER 1039】 字符消除

链接

问题描述


小Hi最近在玩一个字符消除游戏。给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的:
1)如果s包含长度超过1的由相同字母组成的子串,那么这些子串会被同时消除,余下的子串拼成新的字符串。例如"ABCCBCCCAA"中"CC","CCC"和"AA"会被同时消除,余下"AB"和"B"拼成新的字符串"ABB"。
2)上述消除会反复一轮一轮进行,直到新的字符串不包含相邻的相同字符为止。例如”ABCCBCCCAA”经过一轮消除得到"ABB",再经过一轮消除得到"A"
游戏中的每一关小Hi都会面对一个字符串s。在消除开始前小Hi有机会在s中任意位置(第一个字符之前、最后一个字符之后以及相邻两个字符之间)插入任意一个字符('A','B'或者'C'),得到字符串t。t经过一系列消除后,小Hi的得分是消除掉的字符的总数。
请帮助小Hi计算要如何插入字符,才能获得最高得分。

输入


输入第一行是一个整数T(1<=T<=100),代表测试数据的数量。
之后T行每行一个由'A''B''C'组成的字符串s,长度不超过100。

输出


对于每一行输入的字符串,输出小Hi最高能得到的分数。

样例输入

3
ABCBCCCAA
AAA
ABC

样例输出

9
4
2

参考代码

/*
直接暴力即可
*/
import java.io.*;
import java.util.*;

public class Main {
	static final int N=(int)1e5+10;
	static boolean flag;
	static int cnt;
	static StringBuilder check(StringBuilder a) {
		if(a.length()<=1) return a;
		StringBuilder tmp=new StringBuilder("");
		for(int i=0;i<a.length();i++) {
			if(i==0){
				if(a.charAt(i)!=a.charAt(i+1))  tmp.append(a.charAt(i));
				else flag=false;
			}
			else if(i==a.length()-1) {
				if(a.charAt(i)!=a.charAt(i-1)) 
					tmp.append(a.charAt(i));
				else flag=false;
			}
			else{
				if(a.charAt(i)!=a.charAt(i+1)&&a.charAt(i)!=a.charAt(i-1)) 
					tmp.append(a.charAt(i));
				else flag=false;
			}
		}
		cnt=a.length()-tmp.length();
		return tmp;
	}
	static int solve(StringBuilder st) {
		StringBuilder a=new StringBuilder(st);
		int sum=0;
		flag=true;cnt=0;
		a=check(a);
		sum+=cnt;
		while(!flag){
			flag=true;cnt=0;
			a=check(a);
			sum+=cnt;
		}
		return sum;
	}
	static Scanner sc=new Scanner(new InputStreamReader(System.in));
	public static void main(String[] args){
		int T=sc.nextInt();
		StringBuilder ans1=new StringBuilder();
		while(T--!=0) {
			String str=sc.next();
			int ans=0;
			StringBuilder tmp=new StringBuilder(str);
			for(int i=0;i<=str.length();i++) {
				for(int j=0;j<3;j++) {
					 tmp.insert(i,(char)(j+'A'));
					 ans=Math.max(ans, solve(tmp));
					 tmp.delete(i, i+1);
				}
			}
			ans1.append(ans+"\n");
		}
		System.out.print(ans1);
		sc.close();
	}
}
posted @ 2017-07-24 17:42  江南何采莲  阅读(262)  评论(0编辑  收藏  举报