最长公共前缀

题目

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

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

示例 1:

输入: ["flower","flow","flight"]

输出: "fl"

示例 2:

输入: ["dog","racecar","car"]

输出: ""

解释: 输入不存在公共前缀。

说明:

所有输入只包含小写字母 a-z 。

思路

思路有两种:

第一种:纵向扫描:

        1.第一个字符串与余下的所有字符串逐个比较。首先,找出第一个字符串与第二个字符串的最长公共前缀;然后让这个公共前缀和第三个字符串比较找出它们的公共前缀,依次直至遍历完所有的字符串。

        2.第一个字符串与第二个字符串从头开始比较直到遇到不相同的字符为止,并记录最后一个相同的字符的索引right,然后第一个字符串与第三个字符串从头开始遍历时,如果遍历至索引right处还没遇到不同的字符,则停止遍历,从0到right的字符串即为这三个字符串的最长公共前缀,如果没有遍历至索引right处,就有不同的字符,则更新right的值,直至遍历完所有的字符串。

第二种:横向扫描:

        1.同时遍历所有的字符串的第i个字符是否与第一个字符串的第i个字符是否相同,如果出现不相同,那么最长公共前缀即到上一个字符为止。

代码

纵向扫描:

string longestCommonPrefix(vector<string>& strs) {
if(strs.size() <= 0)
{
return "";
}
int right = strs[0].length();
for(int i = 1;i < strs.size();i++)
{
for(int j = 0; j < right ; j++)
{
if(strs[0][j] != strs[i][j])
{
right = j;
break;
}
} }
return strs[0].substr(0,right);
}

横向扫描:

string longestCommonPrefix(vector<string>& strs) {
if(strs.size() <= 0)
{
return "";
}
int right = strs[0].length();
for(int i = 0 ; i < right; i++)
{
for(int j = 1 ; j < strs.size(); j++)
{
if(strs[j][i] != strs[0][i])
{
right = i;
break;
}
}
}
return strs[0].substr(0,right);
}

总结

正常思路一般都会是先找出两个字符串的最长公共前缀,在用这个公共前缀和余下的字符串逐一寻找共同的前缀。

横向的思维是在网上看的,需要经常练习。拓宽思路,加油。

leetcode腾讯精选练习之最长公共前缀(九)的更多相关文章

  1. LeetCode 14 Longest Common Prefix(最长公共前缀)

    题目链接:https://leetcode.com/problems/longest-common-prefix/?tab=Description   Problem: 找出给定的string数组中最 ...

  2. # Leetcode 14:Longest Common Prefix 最长公共前缀

    公众号:爱写bug Write a function to find the longest common prefix string amongst an array of strings. If ...

  3. 【LeetCode】14. Longest Common Prefix 最长公共前缀

    作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:prefix, 公共前缀,题解,leetcode, 力扣 ...

  4. 【leetcode 简单】第五题 最长公共前缀

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

  5. LeetCode -- 求字符串数组中的最长公共前缀

    题目描写叙述: Write a function to find the longest common prefix string amongst an array of strings.就是给定1个 ...

  6. Leetcode No.14 Longest Common Prefix最长公共前缀(c++实现)

    1. 题目 1.1 英文题目 Write a function to find the longest common prefix string amongst an array of strings ...

  7. leetcode腾讯精选练习之除自身以外数组的乘积(十)

    最长公共前缀 题目 给定长度为 n 的整数数组 nums,其中 n > 1,返回输出数组 output ,其中 output[i] 等于 nums 中除 nums[i] 之外其余各元素的乘积. ...

  8. LeetCode:最长公共前缀【14】

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

  9. 【LeetCode】Longest Common Prefix(最长公共前缀)

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

随机推荐

  1. Banner信息收集和美杜莎使用(9.26 第十二天)

    Banner信息收集 Banner信息,欢迎语,在banner信息中可以得到软件开发商.软件名称.版本.服务类型等信息,通过这些信息可以使用某些工具直接去使用相对应的exp去攻击 前提条件:需要和目标 ...

  2. 【pwnable.kr】fb

    这是pwnable.kr的签到题,记录pwn入门到放弃的第一篇. ssh fd@pwnable.kr -p2222 (pw:guest) 题目很简单,登录上了ssh后,发现了3个文件:fd,fd.c, ...

  3. weex 随笔

    1.三大模块: <template>:样板,内容区 <style>:css <script>: js <script> export default{ ...

  4. 17. react redux的中间件

    1. redux 数据流程图 View 会派发一个 Action Action 通过 Dispatch 方法派发给 Store Store 接收到 Action 连同之前的 State 发给  Red ...

  5. Codeforces 1291B - Array Sharpening

    题目大意: 一个数列是尖锐的 当且仅当存在一个位置k使得 a[1]<a[2]<a[3]<...<a[k] 且 a[k]>a[k+1]>a[k+2]>...&g ...

  6. sql优化从300秒到7秒

    原始sql select b.jd 街道,b.rglm 楼宇,zzrl 楼宇编号,count(oname) 入楼企业总数, (select count(oname) from ${tablename} ...

  7. POJ 3784 Running Median【维护动态中位数】

    Description For this problem, you will write a program that reads in a sequence of 32-bit signed int ...

  8. 学生信息的添加 Java web简单项目初试(修改)

    错误原因: 1.Java web 的Servlet类没有配置好,并且缺少一个 Dao类(Date Access Object通常用于操作数据库的). 2.代码的某些名称错误,导致数据库数据存储错误. ...

  9. 文献阅读报告 - Pedestrian Trajectory Prediction With Learning-based Approaches A Comparative Study

    概述 本文献是一篇文献综述,以自动驾驶载具对外围物体行动轨迹的预测为切入点,介绍了基于运动学(kinematics-based)和基于机器学习(learning-based)的两大类预测方法. 并选择 ...

  10. .NET技术-6.0. Expression 表达式树 生成 Lambda

    .NET技术-6.0. Expression 表达式树 生成 Lambda public static event Func<Student, bool> myevent; public ...