题目
输入两个字符串,问他们是否可以循环移位得到彼此。输出 Y or N
输入样例:
abcd cdab
输出样例:
Y
题解思路
此题关键在于处理字符串,如果熟悉字符串处理的相应函数就很好解决。
我的思路是把第一个字符串不断地模拟循环位移然后进行匹配,如果能匹配上就Y,否则如果循环超过了所有的可能就输出N。
AC代码
#include <bits/stdc++.h>
using namespace std;
int size = 0;
void func(string &str1) {
int len = str1.size();
char tmp = str1[len - 1];
str1.insert(0, 1, tmp);
str1 = str1.substr(0, len);
}
int main() {
string str1;
string str2;
cin >> str1 >> str2;
int stop = 0;
size = str1.size();
while (true) {
func(str1);
if (str1 == str2) {
cout << 'Y' << endl;
break;
}
if (stop > size) {
cout << 'N' << endl;
break;
}
stop++;
}
return 0;
}