题解:P14245 [CCPC 2024 Shandong I] 左移

· · 题解

题解

我们设这个字符串为 s,我们发现每一次左移之后的 s_1 会变成 s_ns_2 变成 s_1,所以当 k 合法时,满足 s_ks_{k+1} 相等即可,最后判断一下开始就合法的情况,如果没有满足的 k,输出 -1 即可。

正确代码

#include <bits/stdc++.h>
using namespace std;
char s[500005];
int main()
{
    int t;
    scanf("%d",&t);
    while(t--)
    {
        scanf("%s",s+1);
        int len = strlen(s+1);
        if(s[1]==s[len]) puts("0");
        else
        {
            bool flag = 1;
            for(int i=1;i<=len;i++)
            {
                if(s[i]==s[i+1])
                {
                    printf("%d\n",i);
                    flag = 0;
                    break;
                }
            }
            if(flag) puts("-1");
        }
    }
}