题目:
数组中两个字符串的最小距离__牛客网 (nowcoder.com)
解题思路:
- 模拟+贪心
以下为例
输入:
5
QWER 666
QWER
1234
qwe
666
QWER
输出:
1
用prev1来记录QWER的位置,用prev2来记录666的位置。用 i 来遍历一遍输入数据,一旦遇到QWER就判断prev2是否为 -1,然后计算它们直接的距离,并且修改prev1 = i ,遇到666同理。
代码实现:
#include <iostream>
#include <string>
using namespace std;
int main()
{
int n,prev1 = -1, prev2 = -1;
int ret = 100001;
string s1,s2;
string s;
cin >> n>> s1 >> s2;
for(int i = 0; i < n; i++)
{
cin >> s;
if(s == s1)
{
if(prev2 != -1)
{
ret = min(ret, i - prev2);
}
prev1 = i;
}
else if (s == s2)
{
if(prev1 != -1)
{
ret = min(ret, i - prev1);
}
prev2 = i;
}
}
if(ret == 100001)
cout << -1;
else
cout << ret;
return 0;
}