其他分享
首页 > 其他分享> > 「ABC221」B - typo 题解

「ABC221」B - typo 题解

作者:互联网

B - typo

Time Limit: \(2\; sec\) / Memory Limit: \(1024\; MB\)

Score : \(200\; points\)

Problem Statement|题目描述

choose two adjacent characters in \(S\) and swap them.

选择 \(S\) 中的两个相邻字符并交换它们。

Constraints|数据范围

Input|输入

Output|输出

Sample Input 1 |样例输入 1

abc
acb

Sample Output 1 |样例输出 1

YES

Sample Input 2 |样例输入 2

aabb
bbaa

Sample Output 2 |样例输出 2

No

Sample Input 3 |样例输入 3

abcde
abcde

Sample Output 3 |样例输出 3

Yes


分析

本来就是个简单判断,但我写得挺复杂的。

应该不用解释了:

#include<bits/stdc++.h>
const int maxn=110;
char s[maxn],t[maxn];
inline void myswap(int x,int y){
	int temp=s[x];
	s[x]=s[y];
	s[y]=temp;
}
int main(){
	scanf("%s%s",s+1,t+1);
	int cnt=0;
	for(int i=1;i<=strlen(s+1);i++){
		if(cnt>1){
			printf("No");
			return 0;
		}
		if(s[i]!=t[i]){
			if(s[i-1]!=t[i-1]){
				if(s[i]==t[i-1]&&t[i]==s[i-1]){
					myswap(i,i-1);
					cnt++;
				}else{
					printf("No");
					return 0;
				}
			}else if(s[i+1]!=t[i+1]){
				if(s[i]==t[i+1]&&t[i]==s[i+1]){
					myswap(i,i+1);
					cnt++;
				}else{
					printf("No");
					return 0;
				}
			}else{
				printf("No");
				return 0;
			}
		}
	}
	if(cnt>1)printf("No");
	else printf("Yes");
	return 0;
} 

标签:No,int,题解,样例,Sample,typo,printf,Input,ABC221
来源: https://www.cnblogs.com/wintersunny/p/15367051.html