hautoj 1268: 小天使改名

xiaoxiao2021-02-27  282

                                                                                                                                   1268: 小天使改名

时间限制: 2   内存限制: 128 MB 提交: 491  解决: 134 提交 状态 

题目描述

小天使的b站帐号被大家发现啦。于是小天使决定改名,将他原有ID中的两个不同位置的字母进行交换。(小天使有可能将两个不同位置的相同字母进行交换,虽然这样做他的ID并没有发生变化) Lsf知道小天使原来的ID,他想知道某个ID是否可能是小天使的新ID。

输入

第一行为数据组数T(T≤100)。 每组数据的第一行是字符串s1,(2≤length(s1)≤1000),为小天使的原始ID。 第二行是字符串s2,(length(s2)=length(s1)),为Lsf猜测的ID。 s1,s2均只含小写字母。

输出

对每组数据输出一行,如果这个ID可能是小天使的新ID,输出YES,否则输出NO。

样例输入

3

ch

hc

aa

aa

abc

abb

样例输出

YES

YES

NO

题目来源:http://218.28.220.249:50015/JudgeOnline/problem.php?id=1268

 

题意概括:输入两个字符串,判断是否有可能是同一个字符串改变过来的。

 

解题思路:循环开始,判断s1,s2不同的字符有多少个,如果超过两个或者只有一个的话,肯定不可能,所以输出NO,如果全部相同的话,那这个字符串中必须有相同的字符才行。如果有两个不同那就得这两个字符恰好位置相反。

 

易错分析:字符串的读取时要注意getchar ();清除多余的字符。

代码:

#include <stdio.h> #include <string.h> int main() {     int l,i,j,t,k,l2;     char s1[1010],s2[1010],a[5],b[5];     scanf("%d",&t);getchar();     while(t--){         memset(s1,0,sizeof(s1));         memset(s2,0,sizeof(s2));         gets(s1);         gets(s2);         l=strlen(s1);l2=strlen(s2);         //printf("%d**%s**\n",l,s1);printf("%d**%s**\n",l2,s2);         j=0;         for(i=0;i<=l;i++){             if(s1[i]!=s2[i])             {                 a[j++]=s1[i];                 b[j-1]=s2[i];             }         }         /*for(i=0;a[i]!='\0';i++)             printf("%c***%c\n",a[i],b[i]);*/         if(j>2)             printf("NO\n");         else if(j==2){             if(a[0]==b[1]&&a[1]==b[0])                 printf("YES\n");             else                 printf("NO\n");         }         else if(j==0)         {    k=0;             for(i=0;i<l;i++){                 for(j=i+1;j<=l;j++)                     if(s1[i]==s1[j]){                         k++;printf("YES\n");                         break;                     }                     if(k!=0)                         break;             }             if(k==0)                 printf("NO\n");                     }         else             printf("NO\n");     }     return 0; }

转载请注明原文地址: https://www.6miu.com/read-9449.html

最新回复(0)