Algorithm——最长公共前缀
一、问题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1: 输入: ["flower","flow","flight"]
输出: "fl"
示例 2: 输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明: 所有输入只包含小写字母 a-z 。
二、解决
/**
* @param {string[]} strs
* @return {string}
*/
var longestCommonPrefix = function(strs) {
var strArr = [];
var result = '';
for (let i = 0; i < strs.length; i++) {
strArr.push(strs[i].length);
}
//获取最小长度
var strMaxLengthArr = strArr.sort((a,b)=>a-b);
//慎重提示:for循环里用let,不用var!!!
for (let m = 0; m < strMaxLengthArr[0]; m++) {
for (let i = 0; i < strs.length; i++) {
if (strs[i+1] != undefined) {
if(strs[i].charAt(m) == strs[i+1].charAt(m)) {
//已经走到了strs参数的最后一个
if (i == strs.length-1-1) {result += strs[i].charAt(m);}
} else {
return result;
}
} else {
if (strs.length == 1) {
result = strs[i];
}
}
}
} return result;
};
Algorithm——最长公共前缀的更多相关文章
- hdoj 2594 Simpsons’ Hidden Talents 【KMP】【求串的最长公共前缀后缀】
Simpsons' Hidden Talents Time Limit: 2000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java ...
- CSU1632Repeated Substrings(后缀数组/最长公共前缀)
题意就是求一个字符串的重复出现(出现次数>=2)的不同子串的个数. 标准解法是后缀数组.最长公共前缀的应用,对于样例aabaab,先将所有后缀排序: aab 3 aabaab 1 a ...
- [hdu4552]最长公共前缀
题意:给一个串s,求s的每个前缀出现次数之和. 思路:对于一个后缀i,设i和原串的最长公共前缀为k,则当前总共可以产生k个答案.因此原题转化为求所有后缀与原串的最长公共前缀之和.模板题.以下为通过模板 ...
- [转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀
题记: 这道题不难但是很有意思,有两种解题思路,可以说一种是横向扫描,一种是纵向扫描. 横向扫描:遍历所有字符串,每次跟当前得出的最长公共前缀串进行对比,不断修正,最后得出最长公共前缀串. 纵向扫描: ...
- lintcode :最长公共前缀
题目 最长公共前缀 给k个字符串,求出他们的最长公共前缀(LCP) 样例 在 "ABCD" "ABEF" 和 "ACEF" 中, LCP ...
- LeetCode Longest Common Prefix 最长公共前缀
题意:给多个字符串,返回这些字符串的最长公共前缀. 思路:直接逐个统计同一个位置上的字符有多少种,如果只有1种,那么就是该位是相同的,进入下一位比较.否则终止比较,返回前缀.可能有一个字符串会比较短, ...
- 扩展KMP--求字符串S的所有后缀和字符串T的最长公共前缀
在解上面这个问题前我们要先解决一个类似的问题:求字符串s的所有后缀和s本身的最长公共前缀: 我们用next[]数组保存这些值: 现在我们假设要求next[ x ],并且next[ i ] 0<i ...
- BNUOJ34990--Justice String (exkmp求最长公共前缀)
Justice String Given two strings A and B, your task is to find a substring of A called justice strin ...
- [Swift]LeetCode14. 最长公共前缀 | Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. If there is n ...
随机推荐
- 点击按钮添加一行,和本行的删除功能,序号变动,name属性更改
<!--html结构--> <div> <input type="button" value="添加一行" onclick=&qu ...
- CH5101 LCIS
CH5101 LCIS 题意: 求两个长度不超过3000的序列的最长公共上升子序列 思路: 朴素解法:用f[i,j]表示a1~ai与b1~bj可以构成的以bj为结尾的LCIS的长度,三重循环求解: ; ...
- 简单的XMPP服务器与客户端交互
由客户端发起 C: <stream:stream to="localhost" xmlns="jabber:client" xmlns:stream=&q ...
- if else 和 or 的新用法
a = 1b = 2c = a if a > b else b print(c)print(id(c))print(id(b)) 条件为真返回前面的为假返回后面的 a = 0 b = 2 c = ...
- 安装mysqlclient, 链接mysql失败,提示“Library not loaded: @rpath/libmysqlclient.21.dylib”
问题: >>> import MySQLdb Traceback (most recent call last): File "<stdin>", l ...
- 基础篇:1)时代的发展与结构设计--3d与2d设计的变迁
本章目的:机械设计需要追寻时代的脚步. 1.机械作图时代的划分 这张图是作者个人对机械作图发展的简单划分,并非哪个网站的数据.所以粗糙或错误请海涵. 2.2d作图时代 纯2d时代中,工程师开只绘制二维 ...
- 每一次要fix的pr
1.TODO一定要加自己名字 2.写代码考虑别人的阅读,比如event这样很general的名字不要用,所以不用from sqlalchemy import event, 要用import sqlal ...
- SQL Server触发器创建、删除、修改、查看
一:触发器是一种特殊的存储过程,它不能被显式地调用,而是在往表中插入记录﹑更新记录或者删除记录时被自动地激活.所以触发器可以用来实现对表实施复杂的完整性约束. 二:SQL Server为每个触发器都创 ...
- PHP和Java中foreach循环的用法区别
1.foreach语句介绍: ①PHP: foreach 语法结构提供了遍历数组的简单方式.foreach 仅能够应用于数组和对象,如果尝试应用于其他数据类型的变量,或者未初始化的变量将发出错误信息. ...
- fastjson反序列化多层嵌套泛型类与java中的Type类型
在使用springmvc时,我们通常会定义类似这样的通用类与前端进行交互,以便于前端可以做一些统一的处理: public class Result<T> { private int ret ...