solution
#include<iostream>
#include<string>
using namespace std;
int main(){
int l, r, len = 10000, n;
string s, p;
cin >> s >> p;
for(int i = 0; i <= s.size() - p.size(); i++){
//剩下子串长度不足p.siez()时,不可能再出现子列p
if(s[i] == p[0]){
n = 1;//n表示p的前n个字符已经出现
for(int j = i + 1; j < s.size(); j++){
if(s[j] == p[n]) n++;
if(n == p.size()){
//p中所有字符都已出现
if(j - i < len){
//若长度小于当前记录的最小长度,则更新
len = j - i;
l = i;
r = j;
}
break;
}
}
}
}
for(int i = l; i <= r; i++) cout << s[i];
return 0;
}
文章评论