我的题解:
map记录list1各字符串的位置
遍历list2 在map找相同字符串的位置 记录最小距离
最后遍历下list1或者list2获得最小距离字符串
class Solution {
public:
vector<string> findRestaurant(vector<string>& list1, vector<string>& list2) {
map<string, int> ct;
for (int i=0; i<list1.size(); i++) {
ct[list1[i]] = i;
}
int min_dist = 0X7fffffff;
for (int i=0; i<list2.size(); i++) {
if (ct.find(list2[i]) != ct.end()) {
int dist = i + ct[list2[i]];
if (dist < min_dist) min_dist = dist;
}
}
vector<string> res;
for(int i=0; i<list2.size(); i++) {
if (ct.find(list2[i]) != ct.end()) {
int dist = i + ct[list2[i]];
if (dist == min_dist) res.push_back(list2[i]);
}
}
return res;
}
};