最长公共前缀

题目

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

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

示例 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. 苏州大学ICPC集训队新生赛第二场

    A - Score UVA - 1585 水 #include<bits/stdc++.h> using namespace std; int main(){ int n; cin> ...

  2. 了解java常用框架

    今天我看了一点看起来比较片面的东西,java常用基本床架,并且在网上搜了相关的知识和概括总结,用来继续后期的学习: 1.struts2框架,这是最经典的框架(可以说没有“之一”).可以帮你快速搭建出一 ...

  3. 屏幕适配 - JS - 网站布局元素

    网页可见区域宽:document.body.clientWidth; 网页可见区域高:document.body.clientHeight; 网页可见区域高:document.body.offsetW ...

  4. QT设计

    MFC是跨平台的一个界面开发的类库 框架是什么呢? 1.基础模块 2.机制交互(数据传输) 3.多种语言 QT core QT gui QT widget QT 1.基础模块 2.拓展模块 3.too ...

  5. python阴阳鱼绘制(使用turtle)

    from turtle import * def draw(radius ,color1 , color2): #设置画笔的大小 width(3) #设置画笔颜色和填充颜色 color("b ...

  6. Jquery获取html标签,包含该标签本身

    $(".test").prop("outerHTML"); 原生JS DOM里有一个内置属性 outerHTML,用来获取当前节点的html代码(包含当前节点) ...

  7. Linux学习-课后练习(第二章命令)20200216

  8. Sequence Models Week 3 Neural Machine Translation

    Neural Machine Translation Welcome to your first programming assignment for this week! You will buil ...

  9. ..\OBJ\LED.axf: Error: L6218E: Undefined symbol EXTI_Init (referred from exti.o). 错误修改

    今天在移植野火的程序到元子的开发平台上时候,发现自己在中断初话中断函数的时候出现了:..\OBJ\LED.axf: Error: L6218E: Undefined symbol EXTI_Init ...

  10. dmidecode 硬件

    dmidecode -t Memory   #查内存 Maximum Capacity: 4 GB  #最大4G         Number Of Devices: 2   #2个插槽 服务器到底能 ...