[ 9.10 ]CF每日一题系列—— 186A模拟处理字符串

Description:

  跟你两个不相同的字符串,问你能否将第一个字符串任意两个字母交换一次使得两字符串相同,YES or NO

Solution:

  一维模拟就好了

#include <iostream>
#include <cstring>
#include <cstdio>
using namespace std;
const int maxn = 1e5 + 1e3;
char s1[maxn],s2[maxn];
int main()
{
    while(~scanf("%s%s",s1,s2))
    {
        int flag = 1;
        int len1 = strlen(s1);
        int len2 = strlen(s2);
        int cnt = 0;
        char change_ch1[5];
        char change_ch2[5];
        if(len1 != len2)flag = 0;

        for(int i = 0;i < len1 && flag ;++i)
        {
            if(s1[i] != s2[i])
            {
                change_ch1[++cnt] = s1[i];
                change_ch2[cnt] = s2[i];
            }
            if(cnt > 2)flag = 0;
        }
        if(cnt == 1)flag = 0;
        if(cnt == 2 && change_ch1[1] == change_ch2[2] && change_ch1[2] == change_ch2[1])
            flag = 1;
        else
            flag = 0;
        if(flag)
            printf("YES\n");
        else
            printf("NO\n");
    }
    return 0;
}

猜你喜欢

转载自www.cnblogs.com/DF-yimeng/p/9618548.html