Leetcode984 String Without AAA or BBB
原题:
链接:https://leetcode.com/problems/string-without-aaa-or-bbb/
大意:
- 给出字符串中a和b的个数
- 不能出现’aaa’或者’bbb’
我的思路
- 找出出现次数多的那个字母,比如说是a,按照aab结构排列,若此结构无法排列则多出的a必然会导致’aaa’的情况,又由题意可知,必有解,所以这样的排列一定存在。
- 若还有b多余,则将aab插入b之后变为abab的结构,因为a的个数不小于b的,所以这样的排列一定存在
AC代码
#include <iostream>
using namespace std;
class Solution {
public:
string strWithout3a3b(int A, int B) {
bool isA=0;
string rel="";
vector<char>tmpv;
int minNum,maxNum;
if(A<B){isA=true;minNum=A;maxNum=B;}
else{minNum=B;maxNum=A;}
char maxChar='a'+isA;
char minChar='a'+!isA;
int n1,n2;
for(n1=maxNum,n2=minNum;n1>0;)
{
if(n1<2){tmpv.push_back(maxChar);n1--;}
else{tmpv.push_back(maxChar);tmpv.push_back(maxChar);n1-=2;}
if(n2>0){tmpv.push_back(minChar);n2--;}
}
int start=1;
while(n2>0)
{
tmpv.insert(tmpv.begin()+start,1,minChar);
n2--;
start+=4;
}
rel.insert(rel.begin(),tmpv.begin(),tmpv.end());
return rel;
}
};