ACM 训练日志记录 · 思考 · 成长 提交 / 修改记录
郭一鸣 / 题目列表训练档案
导出

2254B Codeforces Round 1114 (Div. 3)

来源:Codeforces ★ 900

本题活力0.22按难度、完成结果与训练证据估算

算法如山行则将至

题目描述

删除一个非首尾字符后,求压缩字符串的最小长度。(AI概括牛逼)

代码

#include<iostream>
using namespace std;
int main()
{
    int t;
    cin>>t;
    while(t--)
    {
        int n;
        string s;
        cin>>n>>s;
        int num=1;
        for(int i=1;i<n;i++)
        {
            if(s[i]!=s[i-1])num++;
        }
        int del=0;
        for(int i=1;i<=n-2;i++)
        {
            if(s[i]!=s[i-1]&&s[i]!=s[i+1])
            {
                if(s[i-1]==s[i+1])del=2;
                else if(del==0)del=1;
            }
        }
        cout<<num-del<<endl;
    }
    return 0;
}