[//]: # (推荐题解模板,请替换blablabla等内容 ^^
``````````
(单指针)
include[HTML_REMOVED]
include[HTML_REMOVED]
include[HTML_REMOVED]
using namespace std;
int main(){
string s,s1,s2;
getline(cin,s,',');
int len = s.size();
getline(cin,s1,',');
int len1 = s1.size();
getline(cin,s2);
int len2 = s2.size();
int leftindex = 310,rightindex = -1 ;
if(len1 > len || len2 > len)
{
cout<<"-1"<<endl;
return 0;
}
else{
//左边
for(int i = 0; i + len2 < len ;i++){
int t = 0;
int j = i;
while(s[j] == s1[t]){
++t;
++j;
if(t == len1 ){
j--;
leftindex = j;
break;
}
}
if( t == len1) break;
//左边找不到的情况 leftindex = 310;
}
//右边
for(int i = len - 1 ; i >= len1 ; i-- ){
int t = 0;
int j = i;
while(s[j] == s2[t] && t < len2 && j < len){
++t;
++j;
if(t == len2){
rightindex = i;
break;
}
}
if(t == len2) break;
//右边找不到的情况 rightindex = -1;
}
}
if( leftindex >= rightindex) cout <<"-1";
else {cout<<(rightindex - leftindex - 1) <<endl ;}
return 0;
}
时间复杂度
参考文献
C++ 代码
blablabla
算法2
(暴力枚举) $O(n^2)$
blablabla
时间复杂度
参考文献
C++ 代码
blablabla