.............先让我哭一会.......
因为样例三.... 没敢敲...然后确实是样例错了...然后...上次比赛刚做过的一道类似的题...URAL 1941...大水题啊......悔青了....哭瞎了...比赛不只是智力和实力的比拼啊......aaa...
同样的给你两个字符串.问你第二个是不是第一个字串.所谓字串,这里是说字母个数完全相同两部分就可以了。
#include<stdio.h> #include<string.h> #include<iostream> using namespace std; char str1[100010], str2[100010]; int num[100010], num2[100010]; int main() { int t; cin >> t; while(t--) { memset(num2, 0, sizeof(num2)); memset(num, 0, sizeof(num)); cin >> str1; int len = strlen(str1); for (int i=0; i<len; ++i) { num[i] = str1[i] - ‘a‘; } cin >> str2; int len2 = strlen(str2); for (int i=0; i<len2; ++i) { int temp = str2[i] - ‘a‘; num2[temp]++; } int st = 0; bool flag = false; for (int i=0; i<len; ++i) { num2[num[i]]--; while(num2[num[i]] < 0) { num2[num[st]]++; st++; } if (i-st+1 == len2) { flag = true; break; } } if (flag) cout << "YES\n"; else cout << "NO\n"; } returl 0; }
LOoK
时间: 2024-10-28 11:52:05