专栏文章

题解:P13888 [蓝桥杯 2023 省 Python A] 翻转

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

文章操作

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

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

题意

有两个 0101SSTT,当与其相邻的两个数字都与它不同,便可以将其反转,问最少翻转多少次可以让 S=TS = T

题解

感觉真的不配黄题。
直接循环遍历,然后如果 SiTiS_i \ne T_i,就判断一下看看能不能改,如果不能改就打个标记,否则就每一次统计一下答案,然后再注意判断一下第一个字符和最后一个字符,大概就这些。

正确代码

CPP
#include <bits/stdc++.h>
using namespace std;
int main()
{
	int t;
	scanf("%d",&t);
	while(t--)
	{
		string s,t;
		cin>>t>>s;//要先输入t再输入s
		bool flag = 0;
		int ans = 0;
		for(int i=0;i<s.size();i++)
		{
			if(i==0||i==s.size()-1)
			{
				if(s[i]!=t[i])
				{
					flag = 1;
					puts("-1");
					break;
				}
			}
			else
			{
				if(s[i]!=t[i])
				{
					if(s[i+1]!=s[i]&&s[i-1]!=s[i])
					{
						ans++;
					}
					else 
					{
						flag = 1;
						puts("-1");
						break;
					}
				}
			}
		}
		if(!flag) printf("%d\n",ans);
	}
}

评论

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

正在加载评论...