描述
抹布又又又又遇到了一个问题,他有两个长度为n的不同字符串S和T,两个字符串的下标均从0开始并且只包含小写字母。抹布想让两个字符串相等,并且最多只能执行一次操作——让Si和Tj(0<=i<=j<n)互相交换,即交换S中第i个位置和T中第j个位置的字符,请注意,最多只能进行一次操作。但是天才学长抹布实在是太忙了,所以他打算找一个天才程序员帮助他解决这个问题,而那个人就是你!
输入
第一行包括一个整数k(1<=k<=20),代表有k组测试样例。
对于每一个测试样例,第一行包含一个整数n(2<=n<=10000),代表两个字符串的长度。接下来的两行分别为字符串S和字符串T。
输出
对于每一个样例,如果抹布能最多只通过一次操作,使得字符串S与字符串T相等,则输出“yes”,否则输出“no”。
样例输入
2
3
abc
bca
11
artiovnldnp
artiovsldsp
样例输出
no
yes
题目来源
电信学院第二届新生程序设计竞赛
分析:
找到字符串仅有的两个不同处,交换需要单一字符串的两个字符相同(两个字符串都需要符合)。
代码:
#include<bits/stdc++.h>
using namespace std;
int main()
{
int T;
cin>>T;
while(T–)