题目

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

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

示例 1:

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

示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。

说明:

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

算法

1.选取第一个字符串作为标准

2.第一个字符串的首位 和 第二个字符串的的首位 进行对比,如果首位相同,进入3

3.第一个字符串的首位 和 第三个字符串的的首位 进行对比,如果首位相同,....类似情况,

4.第2,3步把第一个字符串的首位和所有字符串的首位进行对比,对比结束后,进入5

5.第一个字符串的第2位 和 第二个字符串的的第2位 进行对比,如果第2位相同,....类似上面的情况

代码规划

一、定义

len:用strs.size()判断出来总共有几个字符串

i :代表第一个字符串的当前字符的位置,比如flower  i=1,代表是l

j: 代表目前对比的是第几个字符串

res:代表返回的结果,初始设为""

二、核心

while(第1个字符串当前字符位置是否小于字符串的长度)

  for(第几个字符)

    算法代码(10-16行)

三、解释19行代码

//append是string的新增
//substr(i,1)是取strs【0】的第i位开始后的一位
//也就相当于每次循环结束后取一位字符

正确代码

 class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int length = strs.size();
int i = ;
bool flag = true; //标记是否满足匹配条件
string res = "";
if(length == )
return "";
while(i < strs[].length()){ //以第一个字符串作为标准
for(int j = ; j < length; j++){
if(strs[j] == "" || strs[j][i] != strs[][i]){
flag = false;
break;
}
}
if(flag == false)
return res;
res.append(strs[].substr(i,));
i++;
}
return res;
}
};

超时代码

算法(10-12行)

1.用第一个字符串作为标准

2.如果第二个字符串中没有不包含第一个字符串的话

3.那就把第一个字符串的最后一位删掉

4.直到删到和第二个字符串相等为止

5.然后到第10行,i+1,开始看现在删改后的第一个字符串是否被包含在第三个字符串中

6.如果不包含的话,那就再删掉现在第一个字符串的最后一位

结果

但是这个在leetcode上的话,是超时的,所以不能通过

思考

如果我先筛选出来最短的字符串,然后再用这个算法怎么样?留给明天去写

 class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string s;
s = strs[];
if(strs.size() == )
return "";
if(strs.size() == )
return strs[];
for(int i=;i<strs.size();i++){
while(strs[i].find(s) != )
s=s.substr(,strs.size()-); }
return s;
}
};

原题链接

14. 最长公共前缀

参考链接

【leetcode】14-最长公共前缀【C++】

14. 最长公共前缀(C++)[简单]

Leetcode14._最长公共前缀的更多相关文章

  1. Python数据结构与算法_最长公共前缀(05)

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

  2. [Swift]LeetCode14. 最长公共前缀 | Longest Common Prefix

    Write a function to find the longest common prefix string amongst an array of strings. If there is n ...

  3. leetcode-14最长公共前缀

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

  4. Leetcode13. 罗马数字转整数Leetcode14. 最长公共前缀Leetcode15. 三数之和Leetcode16. 最接近的三数之和Leetcode17. 电话号码的字母组合

    > 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,输出对应整数 ![在这里插入图片描述](https://img-blog.csdnimg.cn/63802fda72be45eba98d9e4 ...

  5. LeetCode14.最长公共前缀

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

  6. LeetCode14.最长公共前缀 JavaScript

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

  7. 最长公共前缀的golang实现

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

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

    14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". Lee ...

  9. [转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀

    题记: 这道题不难但是很有意思,有两种解题思路,可以说一种是横向扫描,一种是纵向扫描. 横向扫描:遍历所有字符串,每次跟当前得出的最长公共前缀串进行对比,不断修正,最后得出最长公共前缀串. 纵向扫描: ...

随机推荐

  1. 正则表达式模式修正符 比如/esi

    正则表达式模式修正符 比如/esi 作者: 字体:[增加 减小] 类型:转载 下面列出了当前在 PCRE 中可能使用的修正符.括号中是这些修正符的内部 PCRE 名.修正符中的空格和换行被忽略,其它字 ...

  2. 新浪SAE云平台下使用codeigniter的数据库配置

    新浪SAE云平台下使用codeigniter的数据库配置 投稿:shichen2014 字体:[增加 减小] 类型:转载 这篇文章主要介绍了新浪SAE云平台下使用codeigniter的数据库配置,主 ...

  3. ES6 之 Math对象的扩展

    1.ES5 http://www.w3school.com.cn/jsref/jsref_obj_math.asp 2.ES6 Math.trunc() - 取整,去掉一个数的小数部分 console ...

  4. ES6 之 数值扩展

    1.ES5 // Number类型重写了valueOf() toLocaleString() toString('进制')方法 let a = 10 console.log(a.valueOf()); ...

  5. 关于DSP仿真软件CCS中断点和探针的简单理解

    关于DSP仿真软件CCS中断简单理解 (郑州大学姬祥老师编写) CCS中的2.0版本(实验所用)断点(Break Point) 和探针(Probe Point)之所以能组合使用,是因为我们在实现硬件仿 ...

  6. 将hello程序作为驱动程序编译进系统内核

    0x00开始 恩,可能是我比较愚钝,一个内核编译搞了一天,各种问题,各种bug,几度无奈,也是因为我突发奇想,并没有按照原来的那种操作,我直接把helloworld程序放到内核模块中编译成了一个驱动程 ...

  7. CentOS系统安装过程中配置软RAID-0或RAID-1

    什么是RAID-0 RAID-0 (等量模式, stripe):效能最佳.这种模式如果使用相同型号与容量的磁碟来组成时,效果较佳.这种模式的 RAID 会将磁碟先切出等量的区块 (举例来说, 4KB) ...

  8. 主导SEO成败的关键是细节的布局,细数SEO三大布局思路

    有的人认为SEO操作就类似车间工作,有一个完整的流程,整套流程下来网站就会有一个好的排名.这样是不对的,优化的着重点是要有一个好的思维,技巧和策略,把这些着重点相结合的运用到SEO优化中,很大的机率会 ...

  9. R语言入门 (有其他编程语言基础)

    慢慢才意识到概率统计的重要性,当时学的时候只知道很重要,是机器学习基础啥的,但是却没有真正意识到( ╯□╰ ).我现在的理解是,统计学习可以从大数据中挖掘出规律(其实和数据挖掘还是很相关的),在科研工 ...

  10. @Autowired和@Resourse关键字的区别

    这个问题是平时我们面试时面试官非常喜欢问的一个问题.首先,@Resourse是javax.annother包提供的一个注解关键字,是Java EE的方法,但Spring也支持该注解的导入,而@Auto ...