题解 | #1009.String Problem# 2023杭电暑期多校2

1009.String Problem

字符串、签到

题目大意

给定一个字符串 S S S,仅包含小写字母
在其中选择 S S S k k k 个回文非空子串,且它们成对不相交,可以得到等同于 所选子串的长度之和减去子串数量 的分数: ∑ i = 1 k l e n ( s i ) − k \sum\limits_{i=1}^k len(s_i) -k i=1klen(si)k
为了让这道题成为签到题《增加题目难度》,所选子串最多包含一个字符,求对于给定字符串,可以获得的最高分数

解题思路

在增加难度后,很难想到所选的每一字串就是连续字符
答案即给定字符串长度减去连续字符串段数

参考程序

int solve()
{
    string s;
    cin >> s;
    ll len=s.size();
    ll cnt=1;
    FORLL(i,1,len-1){
        if(s[i]!=s[i-1]) {cnt++;}
    }
    cout << len-cnt << endl;
    return 0;
}
/*---

你可能感兴趣的:(2023杭电多校,c++)