https://www.luogu.com.cn/record/170574094 代码如下
#include<bits/stdc++.h>
using namespace std;
int n,t;
char in[1000010];
vector<int>l;
int main(){
cin>>t;
while(t--){
l.clear();
scanf("%d%s",&n,in+1);
l.push_back(1);
for(int i=2;i<=n;i++){
if(l[l.size()-1]==1){//如果只有一位
if(in[i]==in[i-1]){//如果一样
if(i==n){
l[l.size()-2]++;//前一个和前面拼,这一个自己拼
}
else{
i++;//向后移两位
l.push_back(2);
}
}
else{
l.push_back(1);
}
}
else{//有两位
if(i==n-1){//最后两位
if(in[i]==in[i+1]){//如果最后两位相同
if(in[i-2]==in[i] && in[i-1]==in[i+1]){//如果出现最后两个相同情况
l[l.size()-1]=3;
l.push_back(1);
}
else{
l.push_back(2);
}
}
else{
l.push_back(1);
l.push_back(1);
}
break;
}
else{
l.push_back(1);
}
}
}
//for(int i=0;i<l.size();i++){
// printf("%2d%2d\n",i,l[i]);
//}
printf("%d\n",l.size());
}
}