题解:CF2065B Skibidus and Ohio
题解:CF2065B Skibidus and Ohio
题目大意
对于一个字符串 \(S\),进行如下操作:
- 选定一个 \(i\),满足 \(1 \le i \le |S|-1\),如果 \(S_i=S_{i+1}\),那么删除 \(S_{i+1}\),将 \(S_i\) 改为任意小写字母。
- \(|S|\) 尽可能小。
题目思路
为了使 \(|S|\) 尽可能小,我们要使 \(S_i=S_{i+1}\) 出现次数更多。
对于一个字符串 $ S_1,S_2,S_3,S_4,\cdots,S_n $,显然如下操作:
- 如果有两项相等那么经过操作后长度为 \(1\)。
- 如果相邻两项互不相等那么无法进行操作,结果为 \(|S|\)。
代码实现
#include <bits/stdc++.h>
using namespace std;
typedef long long ll;
ll t,len; string s;
int main() {
cin>>t;
while(t--){
cin>>s;
len=s.size();
bool flag=0;
for(int i=0;i<len-1;i++){
if(s[i]==s[i+1]){
flag=1;
break;
}
}
(flag)?cout<<1<<'\n':cout<<len<<'\n';
}
return 0;
}