洛谷 AT4171 题解

题目传送门


题意:

给出两个字符串,可以对其中一个字符串进行操作,将最后一个字符插到最前面,问经过不限次的操作后,是否可以将这两个字符串变成一样的。输出 YesNo


思路:

这道题可以分几种情况来考虑:

  • 两个字符串一开始就是相等的,不需要操作,直接输出 Yes

  • 两个字符串的长度不相同,无论经过多少次操作都不可能变成一样的,直接输出 No

  • 如果上述两种情况都不成立,直接模拟即可。共循环 \(n\) 次,每次将最后一个字符插入到最前面。


code:

#include <bits/stdc++.h>
using namespace std;

string s1,s2;

int main(){
	getline(cin,s1);
	getline(cin,s2);
	if(s1==s2){
		printf("Yes");
	}
	else if(s1.length() != s2.length()){
		printf("No");
	}
	else{
		int len=s1.length();
		for(int i=0;i<len;i++){
			if(s1==s2){
				printf("Yes");
				return 0;
			}
			char t=s1[len-1];
			for(int j=len-1;j;j--){
				s1[j]=s1[j-1];
			}
			s1[0]=t;
		}
		printf("No");
	}
	return 0;
}


posted @ 2022-04-05 17:50  Black--Panda  阅读(58)  评论(0编辑  收藏  举报