**[LeetCode]不含AAA 或者BBB的字符串 答案以及解析
一. 题目信息
二.答案及解析
根据题目可知 不可以三连A或者三连B 所以我们需要卡住二连的节点
具体解析:↓
public class Solution {
public String Text(int a, int b) {
int max=a+b; //设置返回结果的最大值
String a1=Integer.toString(a);//把int类型a转化成字符串 Integer:整形包装类
String b1=Integer.toString(b);//把int类型b转化成字符串
int anumber= a; //存储a的数量
int bnumber= b; //存储b的数量
int tempA=0; //记录a的连续个数 不可以大于等于3
int tempB=0; //记录b的连续个数 不可以大于等于3
StringBuilder FR = new StringBuilder(); //利用StringBuilder 便于字符串添加
while(FR.length()<max) //直至达到最大值 否则一直循环
{
if((anumber<bnumber&&tempB==2)||(anumber>=bnumber&&tempA<2))
//情况一:如果a的剩余数量小于b的剩余数量 并且 b的连续已经达到2
//情况二:如果a的剩余数量大于等于b的剩余数量 并且 a的连续小于2
{
FR.append("a");//最终结果字符串末尾加上a
anumber-=1; //a的剩余数量-1
tempB=0; //b的连续刷新为0
tempA+=1; //a的连续+1
}
else//不满足条件一和条件二
{
FR.append("b"); //最终结果字符串末尾加上b
bnumber-=1; //b的剩余数量-1
tempA=0; //a的连续刷新为0
tempB+=1; //b的连续+1
}
}
return FR.toString(); //FR利用 toString方法 转成字符串 最后返回 完成
}
}