JavaScript查找最长的公共前缀
给定一个字符串数组,我们必须找到它们之间最长的公共前缀。如果没有前缀,则返回空字符串。
例
输入: ["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查找最长的公共前缀相关推荐
- LeetCode【13--罗马数字转整数】LeetCode【14--最长的公共前缀】
罗马数字转整数 题目描述 罗马数字包含以下七种字符: I, V, X, L,C,D 和 M. 例如, 罗马数字 2 写做 II ,即为两个并列的 1.12 写做 XII ,即为 X + II . 27 ...
- 最长公共前缀_最长的公共前缀
最长公共前缀 Problem statement: 问题陈述: Write a function to find the longest common prefix string amongst an ...
- C语言两个字符串查找最长的公共子串的算法(附完整源码)
C语言两个字符串查找最长的公共子串的算法 C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测试) C语言两个字符串查找最长的公共子串的算法完整源码(定义,实现,main函数测 ...
- python输出列表里最长的字符串_从Python的字符串列表中找到最长的公共前缀的程序...
假设我们有一个小写字符串列表,我们必须找到最长的公共前缀. 因此,如果输入类似于[" antivirus","逆时针"," antigravity&q ...
- leetcode-14-最长公共前缀
问题: 解: 请注意,该问题是查找最长公共前缀 一.水平扫描法 package com.example.demo;public class Test14 {/*** 查找字符串数组中最长的公共**前缀 ...
- [LeetCode]最长公共前缀(Longest Common Prefix)
题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow ...
- LeetCode 14.最长公共前缀(字符串)
上一篇博客:Leetcode 13.罗马数字转整数(字符串) 写在前面:大家好!我是ACfun,我的昵称来自两个单词Accepted和fun.我是一个热爱ACM的蒟蒻.最近萌生了刷LeetCode的 ...
- leetcode_最长公共前缀
题目:Write a function to find the longest common prefix string amongst an array of strings. 题解:给出的函数为: ...
- 最长公共前缀 python_python 实现求解字符串集的最长公共前缀方法
问题比较简单,给定一个字符串集合求解其中最长的公共前缀即可,这样的问题有点类似于最长公共子序列的问题,但是比求解最长最长公共子序列简单很多,因为是公共前缀,这样的话只需要挨个遍历即可,只要遍历长度结束 ...
- LeetCode14.最长公共前缀 JavaScript
LeetCode14.最长公共前缀 JavaScript 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串"". 示例 1: 输入: [" ...
最新文章
- weblogic学习笔记(1)
- pandas语法乱、API多?你需要整理一下!
- 【编码】-小Ho的防护盾-2016.08.14
- odoo定时发送邮件
- 后端直接跳转前端页面_WEB前端开发中页面跳转等待时间过长如何解决?
- java解析静态AIS原始数据
- Jerry Wang在SAP社区上获得的徽章
- CF--思维练习--CodeForces - 219C Color Stripe (思维)
- 前端学习(2931):vue里面的虚拟dom和算法
- 计算机等级考试二级要学PS,关于计算机等级考试题库你所不知道的那些一级PS操作题...
- zookeeper启动失败解决方法
- atitit.基于http json api 接口设计 最佳实践 总结o7
- VC2015搭建OpenCV环境(超详细教程)
- 联想小新13pro锐龙版网卡_诠释极致性价比 联想小新Pro 13标压锐龙版笔记本评测...
- [转载]注册电气工程师(供配电)执业资格考试基础考试大纲
- 流量卡之家:物联网实施安全性是建筑行业部署物联网计划主要障碍
- 旋转木马图片效果图,轮播图
- Flowchart流程图和 Mermaid流程图的对比
- excel文件中的多个工作表按名称排序
- 非标准分布随机数生成 - 逆变换ITM与舍选法Rejection
热门文章
- 破解新浪微博js加密登陆超详细
- 国外量化投资经典案例介绍
- 使用StarRocks内置工具Routine Load同步Mysql/TiDB/PG等增量更新数据到StarRocks
- LSB算法BMP图片信息隐藏技术 c语言
- IIS导入SSL证书
- Windows:在Windows下创建并删除软连接
- Python案例 计算 S=1-3+5-7+9-11+…+n,计算n=100001或n=10000001时的和。
- java中bitconverter_BitConverter.GetBytes 方法以什么顺序返回字节数组
- 如何让移动端出现横向滚动条_纯css实现移动端横向滑动列表overflow:atuo;隐藏滚动条...
- oracle删除表空间和修改索引表空间