标签:ret 科学 问题 std int substr syn str java
C/C++:
1 #include <map> 2 #include <queue> 3 #include <cmath> 4 #include <vector> 5 #include <string> 6 #include <cstdio> 7 #include <cstring> 8 #include <climits> 9 #include <iostream> 10 #include <algorithm> 11 #define INF 0x3f3f3f3f 12 using namespace std; 13 const int my_max = 1e5 + 10; 14 15 string s1, s2; 16 int my_next[my_max]; 17 18 bool my_kmp() 19 { 20 int len1 = s1.size(), len2 = s2.size(), temp = len2; 21 if (len1 < len2) return false; 22 for (int i = 1, j = 0; i < len2; ++ i) 23 { 24 while (j > 0 && s2[i] != s2[j]) j = my_next[j]; 25 if (s2[i] == s2[j]) ++ j; 26 my_next[i + 1] = j; 27 } 28 29 for (int i = 0, j = 0; i < len1; ++ i) 30 { 31 while (j > 0 && s2[j] != s1[i]) j = my_next[j]; 32 if (s2[j] == s1[i]) ++ j; 33 if (j == len2) return true; 34 } 35 36 return false; 37 } 38 39 int main() 40 { 41 ios::sync_with_stdio(false); 42 memset(my_next, 0, sizeof(my_next)); 43 while (cin >>s1) 44 { 45 cin >>s2; 46 if (s1.size() < s2.size()) 47 { 48 printf("no\n"); 49 continue; 50 } 51 s1 = s1 + s1.substr(0, s1.size() - 1); 52 53 if (my_kmp()) printf("yes\n"); 54 else printf("no\n"); 55 } 56 return 0; 57 }
标签:ret 科学 问题 std int substr syn str java
原文地址:https://www.cnblogs.com/GetcharZp/p/9516125.html