AcWing 778. 字符串最大跨距
1. 地址
https://www.acwing.com/problem/content/description/780/
2. 题解
#include <iostream>
#include <cstdio>
using namespace std;
//从左往右找
int find_str_left(string s,string s1){
for(int i=0;i + s1.size()<=s.size();i++){
int j;
for(j=0;j<s1.size();j++){
if(s[i+j] != s1[j]){
break;
}
}
if(j == s1.size()){
return i;
}
}
return -1;
}
//从右往左找
int find_str_right(string s,string s2){
for(int i=s.size()-1;((i+1)-s2.size())>=0;i--){
int j;
for(j=0;j<s2.size();j++){
if(s[i-j] != s2[(s2.size()-1)-j]){
break;
}
}
if(j == s2.size()){
return i - (s2.size()-1);
}
}
return -1;
}
int main(){
string s[3] = {"","",""};
int cur = 0;
char c;
while(cin >> c){
if(c == ','){
cur++;
continue;
}
s[cur] += c;
}
int s1_pos = find_str_left(s[0],s[1]);
int s2_pos = find_str_right(s[0],s[2]);
if(s1_pos == -1 || s2_pos == -1){
puts("-1");
}else if(s1_pos - s2_pos >= 0){
puts("-1");
}else if(s2_pos >= s1_pos && s2_pos <= s1_pos+s[1].size()-1){
puts("-1");
}else{
int result = s2_pos - (s1_pos+s[1].size());
cout << result << endl;
}
return 0;
}
标签:跨距,int,s2,s1,pos,778,find,AcWing
From: https://www.cnblogs.com/gao79135/p/17388342.html