[LeetCode][JAVA]不含AAA 或者BBB的字符串 答案分享以及解析

**[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方法 转成字符串 最后返回 完成
}
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值