吃早饭


私信TA

用户名:dotcpp0721969

访问量:4245

签 名:

等  级
排  名 2424
经  验 2315
参赛次数 0
文章发表 22
年  龄 0
在职情况 学生
学  校
专  业

  自我简介:

TA的其他文章

解题思路:

注意事项:

参考代码:

#include<iostream>
using namespace std; 
typedef long long ll;
int main()
{
	int d,sum=0,op=1;
	string t,s;
	cin>>d;
	int d_ = d;//记录d后面输出ans结果用 
	int ans[d];//记录各组值 
	while(d--){
		cin>>t;
		cin>>s;
		if(t[0]!=s[0]||t[t.length()-1]!=s[s.length()-1]){
		//先判断首尾,首尾不同就可以直接返回-1 
			ans[d]=-1;
			continue;
		}
		//对s字符串逐字比对 
		for(int i=1;i<s.length()-1;i++){
			if(s[i]==t[i]) continue;
			else if(s[i]!=t[i]){//出现需要翻转的地方 
				//是否满足i前[i-1]后[i+1]值一致且 是否等于t[i] 
				if(s[i+1]==t[i+1]&&s[i+1]==s[i-1]&&s[i+1]==t[i]){
					s[i]=t[i];
					sum++;//翻转次数加1 
				}
				else{//无法通过翻转条件 
					ans[d]=-1;
					op=0;//防止后面再次计入ans数组的管理变量 
					break;
				}
			}		
		}
		if(op) {//防止覆盖-1 
			ans[d]=sum;
		}
		sum=0;
		op=1;
	} 
	for(int i=d_-1;i>=0;i--){
		cout<<ans[i]<<endl;
	}
    return 0;
}


 

0.0分

1 人评分

  评论区

  • «
  • »