当前位置: 首页 > news >正文

127. 单词接龙

https://leetcode.cn/problems/word-ladder/description/?envType=study-plan-v2&envId=top-interview-150

思路:这题好像和上一题 433. 最小基因变化 基本一样,都是通过bfs找最短路径。

class Solution {public int ladderLength(String beginWord, String endWord, List<String> wordList) {boolean exist = false;for(String s : wordList) {if(s.equals(endWord)) {exist = true;break;}}if(!exist) return 0;// 存储字符串s与endWord的最短路径HashMap<String, Integer> map = new HashMap<>();map.put(endWord, 0);map.put(beginWord, -1); // -1代表还没找到最短路径Queue<String> queue = new LinkedList<>();Queue<String> temp = new LinkedList<>();queue.add(endWord);int cnt = 1;while(!queue.isEmpty()) {cnt++;while(!queue.isEmpty()) {String s = queue.poll();// 初始状态能否走到s状态if(differ(beginWord, s) == 1) {return cnt;}for(String str : wordList) {if(!map.containsKey(str) && differ(str, s) == 1) {temp.add(str);map.put(str, cnt);}}}queue = temp;temp = new LinkedList<>();}return 0;}/*** 计算两个字符串之间的差异* @param s 被计算串* @param target 目标串* @return 差异的字符数*/public int differ(String s, String target) {int cnt = 0;for (int i = 0; i < s.length(); i++) {if (s.charAt(i) != target.charAt(i)) {cnt++;}}return cnt;}
}

相关文章:

  • 苍穹外卖day1实战,Idea中Lombok编译时“找不到符号”,更改JDK版本最全流程,作者亲身尝试
  • java Sm2SignWithSM3转php
  • 不做算法备案后果
  • VSCode如何像Pycharm一样“““回车快速生成函数注释文档?如何设置文档的样式?
  • Ubuntu安装编译Pangolin时所需的OpenGL依赖
  • STM32开发环境配置——VSCode+PlatformIO + CubeMX + FreeRTOS的集成环境配置
  • Oracle 的 MOVE 操作是否重建表?
  • springboot配置redis lettuce连接池,以及连接池参数解释
  • 从逻辑学视角严谨证明数据加密的数学方法与实践
  • 【Ubuntu】如何在一个脚本文件中跑三个python文件?以及端口被占的解决方法
  • 企业级云原生爬虫架构与智能优化
  • ArcGIS Pro 3.4 二次开发 - 地理数据库
  • PostgreSQL 数据库备份与恢复
  • 从源码编译支持ffmpeg(H264编码)的opencv(创建mp4视频报错:H264 is not supported with codec id 28)
  • Oracle 基础知识作业的使用
  • Linux-线程同步于互斥
  • Docker Volumes 还原指南
  • 超详细openBmc Virtual Media 功能及实现流程(1)
  • 使用Rancher在CentOS 环境上部署和管理多Kubernetes集群
  • nginx配置跨域请求,后台不用配置啦,完美
  • 建立网站公司/关键词排名什么意思
  • 一个人做网站需要多久/东莞seo网络优化
  • 网站做不了301重定向/北京seo教师
  • 网站推广营销策划方案/seo快速排名软件品牌
  • 制作小程序需要什么技术/济南seo网站排名关键词优化
  • 如何才能建设出一个优秀网站/淄博seo