题目:http://acm.hdu.edu.cn/showproblem.php?pid=2572
AC代码(C++):
#include <iostream> #include <queue> #include <string> #include <algorithm> #include <string.h> #include <math.h> #define INF 0x3f3f3f3f #define eps 1e-8 using namespace std; int main() { int t; cin >> t; string input, sub1, sub2, sub3, ans; while (t--) { cin >> input >> sub1 >> sub2; ans = input; for (int i = 1; i <= input.length(); i++) { for (int j = 0; j + i <= input.length(); j++) { sub3 = input.substr(j, i); if (sub3.find(sub1) != -1 && sub3.find(sub2) != -1) { if (sub3.length() < ans.length())ans = sub3; else if (sub3.length() == ans.length() && sub3 < ans)ans = sub3; } } } if (ans == input)cout << "No" << endl; else cout << ans << endl; } //system("pause"); }总结: STL的使用. 在做这道题前我还不知道string可以直接用find来查子串, 用<或>来比字典序.