列表

详情


NC26306. 暴走的字符串

描述

已知三个字符串S1,S2,S3。

长度分别为4,8,12

询问在你执行(0次或任意次)以下操作后,能否使S1=“AAAA”,S2=“BBBBBBBB”,S3=“CCCCCCCCCCCC”。

1、 将三个串同时把最后一个字符放在第一个字符前。

2、 Char a=S3[1]; S3[1]=S2[1]; S2[1]=S1[1]; S1[1]=a;

输入描述

多组数据

每组数据输入包括三行分别为S1,S2,S3

数据保证都是大写字母

数据组数不超过1000

输出描述

对于每组数据

返回“YES”或者“NO”

注意换行

示例1

输入:

ABCD
ABCDABCD
ABCDABCDABCD
AAAA
BBBBBBBB
CCCCCCCCCCCC

输出:

NO
YES

原站题解

上次编辑到这里,代码来自缓存 点击恢复默认模板

C++11(clang++ 3.9) 解法, 执行用时: 7ms, 内存消耗: 352K, 提交时间: 2019-06-12 15:53:56

#include<bits/stdc++.h>
using namespace std;
int main()
{
    string a,b,c;
    while(cin>>a>>b>>c)
    {
        int flag =0;
        for(int i=0;i<4 && !flag;i++)
        {
            int book[500];
            memset(book,0,sizeof book);
            book[(int)a[i]]++;
            book[(int)b[i]]++;book[(int)b[i+4]]++;
            book[(int)c[i]]++;book[(int)c[i+4]]++;book[(int)c[i+8]]++;
            if(book[(int)'A']!= 1 || book[(int)'B']!= 2 || book[(int)'C']!= 3)
                flag = 1;
        }
        if(!flag)
            cout<<"YES"<<endl;
        else
            cout<<"NO"<<endl;
    }
    return 0;
}

C++14(g++5.4) 解法, 执行用时: 10ms, 内存消耗: 500K, 提交时间: 2020-01-23 14:16:09

#include<bits/stdc++.h>
using namespace std;
int a[300];
int main() {
	string s1,s2,s3;
	while(cin>>s1>>s2>>s3) {
		int flag=1;
		for(int i=0; i<4 && flag; i++) {
			memset(a,0,sizeof(a));//初始化 
			a[s1[i]]++;
			a[s2[i]]++;
			a[s2[i+4]]++;
			a[s3[i]]++;
			a[s3[i+4]]++;
		    a[s3[i+8]]++;
			if(!(a['A']== 1 && a['B']== 2 && a['C']== 3))//NO
			{
			cout<<"NO"<<endl; 
			flag=0;
		    }
		}
		if(flag)
		cout<<"YES"<<endl;
	}
	return 0;
}

上一题