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