C++ 中的最近单词距离三
假设我们有一个单词列表,以及另外两个称为 word1 和 word2 的单词,我们必须找到列表中这两个单词之间的最短距离。这里,word1 和 word2 可以是相同的,并且它们代表列表中的两个独立单词。我们假设 words = ["practice", "makes", "perfect", "skill", "makes"]。
因此,如果输入是 word1 = “makes”,word2 = “skill”,则输出将为 1
要解决此问题,我们将遵循以下步骤 −
ret := 10^9, l1 := 10^9, l2 := -10^9
n := words 的大小
对于 i 从 0 开始,当 i < n,更新 (i 增加 1),执行 −
如果 words[i] 与 word1 相同,则 −
l1 := i
如果 words[i] 与 word2 相同,则 −
如果 word1 与 word2 相同,则 −
l1 := l2
l2 := i
ret := |l2 - l1| 和 ret 的最小值
返回 ret
示例
为了更好地理解,让我们看看以下实现 −
#include <bits/stdc++.h>
using namespace std;
class Solution {
public:
int shortestWordDistance(vector<string<& words, string word1, string word2) {
int ret = 1e9;
int l1 = 1e9;
int l2 = -1e9;
int n = words.size();
for (int i = 0; i < n; i++) {
if (words[i] == word1) {
l1 = i;
}
if (words[i] == word2) {
if (word1 == word2) {
l1 = l2;
}
l2 = i;
}
ret = min(abs(l2 - l1), ret);
}
return ret;
}
};
main(){
Solution ob;
vector<string< v = {"practice", "makes", "perfect", "skill", "makes"};
cout << (ob.shortestWordDistance(v, "makes", "skill"));
}输入
{"practice", "makes", "perfect", "skill", "makes"},"makes", "skill"输出
1
广告
数据结构
网络
RDBMS
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP