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

Leetcode14. 最长公共前缀

一、题目描述:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 “”。

  1. 示例 1:

    输入:strs = [“flower”,“flow”,“flight”]
    输出:“fl”

  2. 示例 2:

    输入:strs = [“dog”,“racecar”,“car”]
    输出:“”
    解释:输入不存在公共前缀。

  • 提示:
    • 1 <= strs.length <= 200
    • 0 <= strs[i].length <= 200
    • strs[i] 仅由小写英文字母组成

二、解决思路和代码

  1. 解决思路

    • 分析:最长公共前缀的长度 小于等于 数组中最短字符串的长度
      • step1: 找到最短字符串的位置。
      • step2: 将其余字符串中的字符与最短字符串中统一索引位置的字符进行匹配
      • step3: 根据匹配信息,返回最长匹配字符串
  2. 代码

    from typing import List
    class Solution:def longestCommonPrefix(self, strs: List[str]) -> str:## 只有一个字符串,直接返回字符串if len(strs)==1: return strs[0]## step1: 找到最短字符串的位置。如果最短字符串的长度是0,直接返回""   minLengIdx = 0for idx in range(len(strs)):if len(strs[idx])<=len(strs[minLengIdx]):minLengIdx = idxif len(strs[minLengIdx])==0: return ""      ## step2: 以最短字符串为基准matchs = {}strsMinLengIdx = strs[minLengIdx]for idx in range(len(strsMinLengIdx)):matchs[idx] = [strsMinLengIdx[idx],True]## step3: 将其余字符串与最短字符串中的字符进行匹配     for idx in range(len(strs)):if idx==minLengIdx: continuestrs_idx = strs[idx]for i in range(len(strs_idx)):## 字符的索引值大于最短字符串的长度 或 同一索引下的字符不匹配,当前字符串匹配结束if i>=len(strsMinLengIdx) or not matchs[i][1]:breakif strs_idx[i]!=matchs[i][0]:matchs[i][1] = Falsebreak## step4: 返回最长匹配串res = "" for value in matchs.values():if not value[1]: breakres+=value[0]     return res
    
http://www.lryc.cn/news/17493.html

相关文章:

  • JTT808jt1078
  • 数字孪生加持,水利水电工程或将实现全生命周期管理
  • RA4M2开发(3)----读取ISL29035数据,并在OLED上显示,串口打印
  • 密码复杂度
  • Python打印() 中的 SEP 参数
  • AG9300方案替代|替代AG9300设计Type-C转VGA方案|CS5260设计原理图
  • 力扣-文章浏览
  • Unity提取场景中的静态文本
  • Netty常用核心类说明
  • ingress服务
  • java 抽象类 详解
  • MySQL的安装(详解)
  • 界面控件DevExpress WinForm——轻松构建类Visual Studio UI(二)
  • BabylonJS之放烟花
  • vue3 布局样式的原理
  • Qt程序使用路径方式和注意事项
  • 和日期相关的代码和bug——一道力扣题中的小发现
  • 如何在2023年学习编程并获得开发者工作
  • Python实战之小说下载神器(三)排行榜所有小说:最全热门小说合集,总有一款适合你,好多好多好多超赞的小说...(源码分享学习)
  • 前端监控之用户行为监控实践1(数据收集)
  • 【网络原理7】认识HTTP
  • SPI实验
  • 去基线处理
  • 模拟信号4-20mA /0-5V/0-75mV/0-100mV转RS-485/232,数据采集A/D转换模块 YL21
  • [USB]键盘数据格式以及按键键值
  • web客户端-websocket
  • mysql间隙锁
  • 华为OD机试 - 计算面积(Java) | 机试题+算法思路+考点+代码解析 【2023】
  • Python 之 Pandas 时间戳、通过时间间隔实现 datetime 加减、时间转化、时期频率转换和 shift() 时间频率进行移位)
  • 一篇文章搞定linux网络模型