专栏文章

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

P14245题解参与者 1已保存评论 0

文章操作

快速查看文章及其快照的属性,并进行相关操作。

当前评论
0 条
当前快照
1 份
快照标识符
@minksmen
此快照首次捕获于
2025/12/02 04:02
3 个月前
此快照最后确认于
2025/12/02 04:02
3 个月前
查看原文

题目重述

给定长度为 nn 的字符串 ss ,令 ss循环同构 aaa1a_1ana_n 相等。
注:循环同构是将字符串视为环形结构后,通过旋转或循环移位生成不同位置的子串。‌‌

问题分析

nn 最大是五十万,暴力显然不行,我们考虑一种方式: 思考,每次左移后s1s_1会变成 sns_ns2s_2 会成为s1s_1 ,所以只需考虑 (1in1≤i≤n) sis_i 是否等于 sis_i 的下一位即可。

AC code

CPP
#include<bits/stdc++.h>
#define int long long
using namespace std;

signed main()
{
	int t;
	cin>>t;
	while(t--)
	{
		string s;
		cin>>s;
		if(s[0]==s[s.size()-1])
		{
			cout<<0<<endl;
			continue;
		}
		int ans=-1;
		for(int i=0;i+1<s.size();i++)
		{
			if(s[i]==s[i+1])
			{
				ans=i+1;
				break;
			}
		}
		cout<<ans<<endl;
	}
	return 0;
}

评论

0 条评论,欢迎与作者交流。

正在加载评论...