给定一个字符串数组,我们必须找到它们之间最长的公共前缀。如果没有前缀,则返回空字符串。

输入: ["flower","flow","flight"]
得到的目标值: "fl"输入: ["dog","racecar","car"]
得到的目标值: ""
There is no common prefix among the input strings.

方法 1:使用排序查找最长的常用前缀。

这个想法是去的。

  • 根据字符串的长度按升序对字符串进行排序。
  • 然后使用其中最小的,并迭代其中的每个字符,因为max前缀将小于或等于最小的字符串。
  • 在每次迭代中,检查其余单词的前缀是否存在,如果存在,则存储它,否则中断并返回字符串。
const longestCommonPrefix = (strs) => {//If empty array return empty stringif(strs.length === 0){return "";}//To track the prefixlet lc = "";//Sort the string in ascending orderstrs.sort((a, b) => ('' + a).localeCompare(b));//Get the smallest string.let smallest = strs[0];//so that we have to iterate for it only.for(let i = 0; i < smallest.length; i++){//Get the first letterlet current = smallest[i];//Flag to check if prefix is present in the remaining stringlet isPresent = true;for(let values of strs){//Break if different letterif(values[i] !== current){isPresent = false;break;}}//Break the loop if no prefixif(i === 0 && !isPresent){break;}//Add the prefixlc += isPresent ? current : ''; }//return the prefixreturn lc;
};console.log(longestCommonPrefix(["flower","flow","flight"]));// 结果"f1"

时间复杂度:O(nlogn +(n *字符串中最小单词的长度))。
空间复杂度:O(1)或O(n),如果我们使用不同的排序。


方法 2:通过从末尾删除字符。

从概念上讲,这就是它的工作原理。

  • 从数组中获取第一个单词。
  • 迭代数组中的每个单词,并检查它是否不是同一个单词。
  • 然后继续从末尾删除字符,直到找到前缀。
  • 如果没有前缀并且字符串变为空,则中断并返回空字符串。
const longestCommonPrefix = (strs) => {//If empty arrayif(strs.length == 0) {return "";}//Get the first wordlet str = strs[0];//look for prefix in each wordfor (const word of strs) {while (word.indexOf(str) !== 0) {// remove one character from the endstr = str.substring(0, str.length - 1);if (str === ""){break;}}}return str;
};

时间复杂度:O(n * 最大字符串的长度)。
空间复杂度:O(1)。

JavaScript查找最长的公共前缀相关推荐

  1. LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】

    罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 ...

  2. 最长公共前缀_最长的公共前缀

    最长公共前缀 Problem statement: 问题陈述: Write a function to find the longest common prefix string amongst an ...

  3. C语言两个字符串查找最长的公共子串的算法(附完整源码)

    C语言两个字符串查找最长的公共子串的算法 C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测试) C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测 ...

  4. python输出列表里最长的字符串_从Python的字符串列表中找到最长的公共前缀的程序...

    假设我们有一个小写字符串列表,我们必须找到最长的公共前缀. 因此,如果输入类似于[" antivirus","逆时针"," antigravity&q ...

  5. leetcode-14-最长公共前缀

    问题: 解: 请注意,该问题是查找最长公共前缀 一.水平扫描法 package com.example.demo;public class Test14 {/*** 查找字符串数组中最长的公共**前缀 ...

  6. [LeetCode]最长公共前缀(Longest Common Prefix)

    题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...

  7. LeetCode 14.最长公共前缀(字符串)

    上一篇博客:Leetcode 13.罗马数字转整数(字符串)  写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode的 ...

  8. leetcode_最长公共前缀

    题目:Write a function to find the longest common prefix string amongst an array of strings. 题解:给出的函数为: ...

  9. 最长公共前缀 python_python 实现求解字符串集的最长公共前缀方法

    问题比较简单,给定一个字符串集合求解其中最长的公共前缀即可,这样的问题有点类似于最长公共子序列的问题,但是比求解最长最长公共子序列简单很多,因为是公共前缀,这样的话只需要挨个遍历即可,只要遍历长度结束 ...

  10. LeetCode14.最长公共前缀 JavaScript

    LeetCode14.最长公共前缀 JavaScript 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串"". 示例 1: 输入: [" ...

最新文章

  1. weblogic学习笔记(1)
  2. pandas语法乱、API多?你需要整理一下!
  3. 【编码】-小Ho的防护盾-2016.08.14
  4. odoo定时发送邮件
  5. 后端直接跳转前端页面_WEB前端开发中页面跳转等待时间过长如何解决?
  6. java解析静态AIS原始数据
  7. Jerry Wang在SAP社区上获得的徽章
  8. CF--思维练习--CodeForces - 219C Color Stripe (思维)
  9. 前端学习(2931):vue里面的虚拟dom和算法
  10. 计算机等级考试二级要学PS,关于计算机等级考试题库你所不知道的那些一级PS操作题...
  11. zookeeper启动失败解决方法
  12. atitit.基于http json api 接口设计 最佳实践 总结o7
  13. VC2015搭建OpenCV环境(超详细教程)
  14. 联想小新13pro锐龙版网卡_诠释极致性价比 联想小新Pro 13标压锐龙版笔记本评测...
  15. [转载]注册电气工程师(供配电)执业资格考试基础考试大纲
  16. 流量卡之家:物联网实施安全性是建筑行业部署物联网计划主要障碍
  17. 旋转木马图片效果图,轮播图
  18. Flowchart流程图和 Mermaid流程图的对比
  19. excel文件中的多个工作表按名称排序
  20. 非标准分布随机数生成 - 逆变换ITM与舍选法Rejection

热门文章

  1. 破解新浪微博js加密登陆超详细
  2. 国外量化投资经典案例介绍
  3. 使用StarRocks内置工具Routine Load同步Mysql/TiDB/PG等增量更新数据到StarRocks
  4. LSB算法BMP图片信息隐藏技术 c语言
  5. IIS导入SSL证书
  6. Windows:在Windows下创建并删除软连接
  7. Python案例 计算 S=1-3+5-7+9-11+…+n,计算n=100001或n=10000001时的和。
  8. java中bitconverter_BitConverter.GetBytes 方法以什么顺序返回字节数组
  9. 如何让移动端出现横向滚动条_纯css实现移动端横向滑动列表overflow:atuo;隐藏滚动条...
  10. oracle删除表空间和修改索引表空间