题目
思路
暴力遍历
代码
#include<bits/stdc++.h>
using namespace std;
char a[3] = {'A', 'B', 'C'};
int flag = 0;
string eraseString(string s)
{
// cout<<s<<endl;
int len = s.length();
int i = 0;
string tmp = "";
while (i<len)
{
char nowCh = s[i];
int j = i+1;
for(; j<len && s[j]==nowCh; j++);
if(j==i+1) // 该字符并非重复字符
{
tmp += nowCh;
i = j;
}
else // 该字符是重复字符
{
flag = 1; // 找到重复字符
i = j;
}
}
if(tmp.length()==s.length()) return tmp;
return eraseString(tmp);
}
int main()
{
int t; cin>>t;
for(int i = 0 ; i < t; i++)
{
string s; cin>>s;
int len = s.length();
int minLen = len;
cout<<"case #"<<i<<':'<<endl;
for(int pos = 0; pos <= len; pos++)
// 遍历每一个位置
{
for(int cpos = 0; cpos < 3; cpos++)
// 遍历ABC
{
string tmpS = s;
char ch = a[cpos];
// 插入A/B/C
if(pos!=len)
tmpS.insert(pos, 1, ch);
else
tmpS += ch;
string res = eraseString(tmpS);
if(res.length()<minLen) minLen = res.length();
}
}
cout<<len+1-minLen<<endl;
}
system("pause");
return 0;
}