【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();
}
}
【HIHOCODER 1039】 字符消除的更多相关文章
- hihoCoder 1039:字符消除(字符串处理)
#1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消 ...
- hihocoder #1039 : 字符消除 ( 字符串处理类 ) 好久之前做的题目,具体的算法代码中阅读吧
#1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消 ...
- [hihoCoder]#1039 : 字符消除
Description 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消除过程是如下进行的: 1)如果s包含长度超过1的由相同字母组成的子串,那么这些 ...
- hihoCoder 1039 字符消除 最详细的解题报告
题目来源:字符消除 解题思路: 1.在给定字符串中的任意位置插入'A'.'B'.'C'中的任意一个字符,然后计算插入后的字符经过消除后最短的字符串长度: 2.在计算字符消除后最短长度时,智能一遍一遍的 ...
- hihoCoder 1039字符消除 (字符串处理)
http://hihocoder.com/problemset/problem/1039 因为字符串只由3种字母组成,并且插入的字符也只能是这三种字符的其中一个,那么可以考虑枚举这三个字符其中一个字符 ...
- 【hihoCoder】#1039 : 字符消除 by C solution
#1039 : 字符消除 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在玩一个字符消除游戏.给定一个只包含大写字母"ABC"的字符串s,消 ...
- 【hihoCoder】1039 : 字符消除
题目:http://hihocoder.com/problemset/problem/1039 给定一个字符串s,只包含'A', 'B', 'C'三种字符 1. 向 s 的任意位置 (包括头和尾) 中 ...
- 【hihocoder 1039 字符串消除】模拟
题目链接:http://hihocoder.com/problemset/problem/1039 题意:给定一个只由{A, B, C}组成的字符串s,长度为n, 故包含n+1个空隙:现要求在某个空隙 ...
- hihoCoder#1039
刚开始学习C语言,准备在做hiho的题目的过程中来学习,在此进行记录,如果代码中有错误或者不当的地方还请指正. 时间限制:1000ms 单点时限:1000ms 内存限制:256MB 描述 小Hi最近在 ...
随机推荐
- PHP + jquery.validate remote的用法
[ 转 ] http://www.cnlvzi.com/index.php/Index/article/id/58 最近做验证功能时,用到jquery.validate.js中的remote远程验证方 ...
- Centos 7.x 配置Gitlab
GitLab 是一个用于仓库管理系统的开源项目,使用Git作为代码管理工具,并在此基础上搭建起来的web服务. 1. 安装并配置必要的依赖关系 如果你想使用 Postfix 发送邮件,请在安装过程中根 ...
- 清橙A1339. JZPLCM(顾昱洲)
http://www.tsinsen.com/ViewGProblem.page?gpid=A1339 题解:https://blog.csdn.net/LOI_DQS/article/details ...
- 转-eclipse管理多个workspace
Eclipse作为Java开发中最常用的开发工具,大家都很熟悉了,但是,当你做过很多项目后你会发现你的eclipse的package explorer视图下显示的project超级多,这时你可能会关闭 ...
- ogg 监控脚本
section 1: #! /bin/sh PATH=/usr/local/bin:$PATHORACLE_SID=statdb ORAENV_ASK=NO. oraenv > /dev/nul ...
- 153 Find Minimum in Rotated Sorted Array 旋转数组的最小值
假设一个按照升序排列的有序数组从某未知的位置旋转.(比如 0 1 2 4 5 6 7 可能变成 4 5 6 7 0 1 2).找到其中最小的元素.你可以假设数组中不存在重复的元素.详见:https:/ ...
- 三色灯渐变DIY制作
小编前几天查资料,怎么使用12864屏幕的用法,突然发觉微博是个好东西,随着自己的成长,学习了很多的知识,没有做笔记的习惯,只是习惯把用到的硬件,传感器,资料写到程序的备注内,但感觉,用到时不是那么方 ...
- HDU 1221 Rectangle and Circle 考虑很多情况,good题
http://acm.hdu.edu.cn/showproblem.php?pid=1221 114 92 31 95 13 96 3 这题只需要判断圆和矩形是否相交,然后在里面是不算相交的. 那么就 ...
- Suricata的Reputation
见官网 https://suricata.readthedocs.io/en/latest/reputation/index.html Docs » 9. Reputation Edit on Git ...
- lavarel功能总结
详细可参见笔记:laraval学习笔记(二) 路由 route 绑定模型,绑定参数 模版 blade .blade.php后缀,有laravel自己的模版语法 模型 model 如果用create创建 ...