题目:
数组中两个字符串的最小距离__牛客网 (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;elsecout << ret;return 0;
}