今天和大家聊的问题叫做 最短单词距离,我们先来看题面:https://leetcode-cn.com/problems/shortest-word-distance/
Given a list of words and two words word1 and word2, return the shortest distance between these two words in the list.
给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离。
示例
示例: 假设 words = ["practice", "makes", "perfect", "coding", "makes"] 输入: word1 = “coding”, word2 = “practice” 输出: 3 输入: word1 = "makes", word2 = "coding" 输出: 1 注意: 你可以假设 word1 不等于 word2, 并且 word1 和 word2 都在列表里。
解题
思路:遍历一遍字符串,记录最后一次出现的位置即可,然后找出差距最小的。
class Solution { public: int shortestDistance(vector<string>& words, string word1, string word2) { int i1 = -1, i2 = -1, mindis = INT_MAX; for(int i = 0; i < words.size(); ++i) { if(words[i] == word1) i1 = i; else if(words[i] == word2) i2 = i; if(i1 != -1 && i2 != -1) mindis = min(mindis, abs(i1-i2)); } return mindis; } };
好了,今天的文章就到这里,如果觉得有所收获,请顺手点个在看或者转发吧,你们的支持是我最大的动力 。