题目链接
题目分析:
解题思路:
每次循环移动一位,用string.find()
匹配即可
AC程序(C++):
/**************************
*@Author: 3stone
*@ACM: HDU.2203 亲和串
*@Time: 18/6/13
*@IDE: VS Code
***************************/
#include<cstdio>
#include<cstring>
#include<string>
#include<iostream>
#define maxn 100005
using namespace std;
//循环往后移动一位
string rotating_shift(string str) {
//其实没有按循环移位来写,利用string特性剪切粘贴了一下
string temp = str.substr(str.size() - 1, 1); //剪下最后一个字符
str.erase(str.size() - 1, 1);
return temp += str;
}
int main() {
string s1, s2;
int len, i;
while(cin >> s1) {
cin >> s2;
len = s1.size();
for (i = 1; i <= len; i++) {
if (s1.find(s2) != string::npos) { //匹配成功
printf("yes\n");
break;
}
//循环移动 一位
s1 = rotating_shift(s1);
}
//循环一遍还是没有匹配到则输出 no
if (i == len + 1)
printf("no\n");
}
return 0;
}