1.数组中字符串的最小距离
题目链接
- 解题思路:
小技巧
✌:标记两个字符串是否被找到,每次找到一个字符串就更新一次答案来保证找到的是最小距离。
- 实现代码:
#include <iostream>
using namespace std;
int main() {
int n;
cin >> n;
string str1, str2;
cin >> str1 >> str2;
int ptr1 = -1, ptr2 = -1, ans = 1e5 + 10;
// 每找到一个字符串就更新一次
bool flag1 = false, flag2 = false;
string str;
for (int i = 1; i <= n; i ++)
{
cin >> str;
if (str == str1)
{
ptr1 = i;
flag1 = true;
}
else if (str == str2)
{
ptr2 = i;
flag2 = true;
}
if (flag1 && flag2)
ans = min(abs(ptr2 - ptr1), ans);
}
if (ans == 1e5 + 10)
cout << -1 << endl;
else
cout << ans << endl;
return 0;
}