最长公共前缀

题目

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

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

示例 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. UVA - 1645 Count (统计有根树)(dp)

    题意:输入n(n <=1000),统计有多少个n结点的有根树,使得每个深度中所有结点的子结点数相同.输出数目除以109+7的余数. 分析: 1.dp[i],i个结点的有根树个数 2.假设n=7, ...

  2. POJ 2521:How much did the businessman lose

    How much did the businessman lose Time Limit: 1000MS   Memory Limit: 65536K Total Submissions: 9965 ...

  3. TypeScript 文件引入 Html (ts import html webpack)

    我们的目标是把html引入ts文件,webpack打包时就能把html打进js文件,减少文件加载啦 1 安装 text-loader npm install text-loader --save-de ...

  4. SpringBoot基于easyexcel导出和写入Excel

      easyexcel是阿里巴巴旗下开源项目,主要用于Excel文件的导入和导出处理,今天我们利用SpringBoot和easyexcel实战演示如何导出和写入Excel文件. 一.加入我们需要的ea ...

  5. jQuery元素的左右移动

    1.下载jQuery,并导入:https://blog.csdn.net/weixin_44718300/article/details/88746796 2.代码实现: <!DOCTYPE h ...

  6. Java UDP发送与接收

    IP地址?端口号?主机名? 什么是Socket? 什么是UDP? 什么是TCP? UDP和TCP区别? 以上问题请自行百度,有标准解释,此处不再赘述,直接上干货! 实例: 发送端: public cl ...

  7. Day 12:枚举值、枚举类

    jdk1.5新特性之-----枚举 问题:某些方法所接收的数据必须是在固定范围之内的,  解决方案: 这时候我们的解决方案就是自定义一个类,然后是私有化构造函数,在自定义类中创建本类的对象对外使用. ...

  8. ACwing算法基础课听课笔记(第一章,基础算法二)(差分)

    前缀和以及二维前缀和在这里就不写了. 差分:是前缀和的逆运算 ACWING二维差分矩阵    每一个二维数组上的元素都可以用(x,y)表示,对于某一元素(x0,y0),其前缀和就是以该点作为右下角以整 ...

  9. Python Email发送,通知业务完成

    Email 发送 #!/usr/bin/python # -*- coding: UTF-8 -*- import base64 import smtplib from email.mime.text ...

  10. 进度1_家庭记账本App

    今天完成了昨天的初步构想,详细介绍见上一篇博客,具体项目结构和案例如下: MainActivity.java: package com.example.familybooks; import andr ...