题解 | #数组中两个字符串的最小距离#
数组中两个字符串的最小距离
https://www.nowcoder.com/practice/2c6a0a8e1d20492f92941400036e0890
#include <iostream> #include<algorithm> using namespace std; const int N =1e5+10; string strs[N]; int main() { int n; cin>>n; string s1,s2; cin>>s1>>s2; int prev1=-1,prev2=-1; int res=0x3f3f3f3f; for(int i=0;i<n;i++) { cin>>strs[i]; } for(int i=0;i<n;i++) { if(strs[i]==s1) { prev1=i; } else if(strs[i]==s2) { prev2=i; } if(prev2!=-1&&prev1!=-1) { res=min(res,abs(prev2-prev1)); } } if(res==0x3f3f3f3f) cout<<-1; else cout<<res; } // 64 位输出请用 printf("%lld")