请设计一个类,使该类的构造函数能够接收一个字符串数组。然后再实现一个方法,该方法能够分别接收两个单词,并返回列表中这两个单词之间的最短距离。

实现 WordDistanc 类:

WordDistance(String[] wordsDict) 用字符串数组 wordsDict 初始化对象。
int shortest(String word1, String word2) 返回数组 worddict 中 word1 和 word2 之间的最短距离。

示例 1:

输入:
[“WordDistance”, “shortest”, “shortest”]
[[[“practice”, “makes”, “perfect”, “coding”, “makes”]], [“coding”, “practice”], [“makes”, “coding”]]
输出:
[null, 3, 1]

解释:

WordDistance wordDistance = new WordDistance([“practice”, “makes”, “perfect”, “coding”, “makes”]);
wordDistance.shortest(“coding”, “practice”); // 返回 3
wordDistance.shortest(“makes”, “coding”); // 返回 1

注意:

1 <= wordsDict.length <= 3 * 104
1 <= wordsDict[i].length <= 10
wordsDict[i] 由小写英文字母组成
word1 和 word2 在数组 wordsDict 中
word1 != word2
shortest 操作次数不大于 5000

来源:力扣(LeetCode)
链接:https://leetcode.cn/problems/shortest-word-distance-ii

方法一:哈希表+双指针

C++提交内容:

class WordDistance {public:WordDistance(vector<string>& wordsDict) {int length = wordsDict.size();for (int i = 0; i < length; i++) {string word = wordsDict[i];indicesMap[word].emplace_back(i);}}int shortest(string word1, string word2) {vector<int> indices1 = indicesMap[word1];vector<int> indices2 = indicesMap[word2];int size1 = indices1.size(), size2 = indices2.size();int pos1 = 0, pos2 = 0;int ans = INT_MAX;while (pos1 < size1 && pos2 < size2) {int index1 = indices1[pos1], index2 = indices2[pos2];ans = min(ans, abs(index1 - index2));if (index1 < index2) {pos1++;} else {pos2++;}}return ans;}
private:unordered_map<string, vector<int>> indicesMap;
};/*** Your WordDistance object will be instantiated and called as such:* WordDistance* obj = new WordDistance(wordsDict);* int param_1 = obj->shortest(word1,word2);*/

力扣(LeetCode)244. 最短单词距离 II(2022.09.01)相关推荐

  1. LeetCode 244. 最短单词距离 II(哈希map+set二分查找)

    文章目录 1. 题目 2. 解题 2.1 暴力超时 2.2 哈希表+set二分查找 1. 题目 请设计一个类,使该类的构造函数能够接收一个单词列表. 然后再实现一个方法,该方法能够分别接收两个单词 w ...

  2. LeetCode 245. 最短单词距离 III

    文章目录 1. 题目 2. 解题 1. 题目 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离. word1 和 word2 是有可能相同的,并且它们将分别表 ...

  3. LeetCode 243. 最短单词距离

    文章目录 1. 题目 2. 解题 1. 题目 给定一个单词列表和两个单词 word1 和 word2,返回列表中这两个单词之间的最短距离. 示例: 假设 words = ["practice ...

  4. 2022-01-22:力扣411,最短独占单词缩写。 给一个字符串数组strs和一个目标字符串target。target的简写不能跟strs打架。 strs是[“abcdefg“,“ccc“],tar

    2022-01-22:力扣411,最短独占单词缩写. 给一个字符串数组strs和一个目标字符串target.target的简写不能跟strs打架. strs是["abcdefg", ...

  5. 力扣(LeetCode)刷题,简单+中等题(第33期)

    目录 第1题:Z 字形变换 第2题:删除字符串中的所有相邻重复项 第3题:基本计算器 II 第4题:螺旋矩阵 第5题:螺旋矩阵 II 第6题:盛最多水的容器 第7题:删除有序数组中的重复项 II 第8 ...

  6. 力扣(LeetCode)刷题,简单+中等题(第31期)

    目录 第1题:同构字符串 第2题:最后一块石头的重量 第3题:最小路径和 第4题:键盘行 第5题:存在重复元素 II 第6题:两数相加 第7题:三个数的最大乘积 第8题:等价多米诺骨牌对的数量 第9题 ...

  7. 力扣(LeetCode)刷题,简单+中等题(第30期)

    目录 第1题:单词规律 第2题:找不同 第3题:在排序数组中查找元素的第一个和最后一个位置 第4题:使用最小花费爬楼梯 第5题:寻找峰值 第6题:字符串中的第一个唯一字符 第7题:两个数组的交集 II ...

  8. Leetcode-How-What 力扣Leetcode刷题指南

    Leetcode-How-What 力扣Leetcode刷题指南 About the way how to use Leetcode wisely for preparing the intervie ...

  9. 力扣(LeetCode)刷题,简单+中等题(第35期)

    力扣(LeetCode)定期刷题,每期10道题,业务繁重的同志可以看看我分享的思路,不是最高效解决方案,只求互相提升. 第1题:解码异或后的排列 试题要求如下: 回答(C语言): /*** Note: ...

  10. 力扣(LeetCode)刷题,简单+中等题(第34期)

    目录 第1题:整数转罗马数字 第2题:电话号码的字母组合 第3题:二叉树的所有路径 第4题:砖墙 第5题:下一个排列 第6题:括号生成 第7题:删除并获得点数 第8题:全排列 第9题:颜色分类 第10 ...

最新文章

  1. 1.3创建项目「深入浅出ASP.NET Core系列」
  2. 简说JAVA8引入函数式的问题
  3. PHP--------解决网址URL编码问题
  4. Git的使用和提交规范
  5. ae saber插件_【AE插件】 用于做动画制作/设计的五个免费插件 非常好用
  6. 全国计算机等级考试培训方案,第23次全国计算机等级考试培训安排.doc
  7. 如何在ALV中输出标题头
  8. 三十五、深入Java中的泛型(下篇)
  9. [剑指offer]面试题第[3]题[JAVA][从尾到头打印链表][栈]
  10. 博主日常工作中使用的shell脚本分享
  11. 使用继承思想,去开发一款组件(element-ui collapse组件为例子)
  12. SAP-R3被取代,苏宁采购平台的升级和架构演进之路
  13. 【CSS】关于表单样式
  14. DS4000系列存储配置storage manager介绍
  15. julia语言 python解释器_新一代科学计算语言Julia以及开发环境搭建教程
  16. 黑马程序员:Java学习路线图上线了
  17. 手机浏览器电脑版有什么作用,手机浏览器如何设置成电脑版
  18. mysql两个等号是什么运算符_什么是MySQL中的这个运算符=?
  19. MySQL的关键技术及主要特征_生物特征识别十大关键技术解析
  20. 办公室适合新中式的装修风格吗

热门文章

  1. 电子商务设计师教程 电子版_电子商务电子商务| 第1部分
  2. @Primary注解在spring中的使用
  3. android截图方法,安卓手机的截图方法
  4. 大学生试用期辞退之没有工钱//2021-1-22
  5. 基于linux的软件测试,基于linux的Web服务器性能测试
  6. tf.shape用法
  7. CSDN/博客园复制代码空格报错问题解决
  8. android 如何读取u盘中数据恢复,U盘数据恢复常见问题及恢复方法汇总
  9. php 获取 星期几,php怎么获得星期几
  10. Kotlin中三元运算符