Leetcode14._最长公共前缀
题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 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. 最长公共前缀
参考链接
Leetcode14._最长公共前缀的更多相关文章
- Python数据结构与算法_最长公共前缀(05)
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- [Swift]LeetCode14. 最长公共前缀 | Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings. If there is n ...
- leetcode-14最长公共前缀
leetcode-14最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower& ...
- Leetcode13. 罗马数字转整数Leetcode14. 最长公共前缀Leetcode15. 三数之和Leetcode16. 最接近的三数之和Leetcode17. 电话号码的字母组合
> 简洁易懂讲清原理,讲不清你来打我~ 输入字符串,输出对应整数 
14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". Lee ...
- [转][LeetCode]Longest Common Prefix ——求字符串的最长公共前缀
题记: 这道题不难但是很有意思,有两种解题思路,可以说一种是横向扫描,一种是纵向扫描. 横向扫描:遍历所有字符串,每次跟当前得出的最长公共前缀串进行对比,不断修正,最后得出最长公共前缀串. 纵向扫描: ...
随机推荐
- 学生信息的添加 Java web简单项目初试(修改)
错误原因: 1.Java web 的Servlet类没有配置好,并且缺少一个 Dao类(Date Access Object通常用于操作数据库的). 2.代码的某些名称错误,导致数据库数据存储错误. ...
- js filter()用法小结
/* filter() 对数组中的每个元素都执行一次指定的函数(callback),并且创建一个新的数组, 该数组元素是所有回调函数执行时返回值为 true 的原数组元素.它只对数组中的 非空元素执行 ...
- 落地即王道,锁死企业智变CP——云+AI
国庆前夜,"70年,我是主角"的微电影引发网络热议,这是人民日报新媒体和电影频道联手打造.京东云和京东AI提供技术支持.这是中国首部全民定制国庆献礼片,网友只要上传正脸照片,就能通 ...
- [极客大挑战 2019]Secret File
0x00知识点 没有过滤file 使用php的file伪协议去读取文件 ?file=php://filter/convert.base64-encode/resource=flag.php 0x01解 ...
- Pytorch学习--编程实战:猫和狗二分类
Pytorch学习系列(一)至(四)均摘自<深度学习框架PyTorch入门与实践>陈云 目录: 1.程序的主要功能 2.文件组织架构 3. 关于`__init__.py` 4.数据处理 5 ...
- Linux-让程序不能多次运行
1.因为守护进程是长时间运行而不退出的,因此./a.out执行一次就有一个进程,执行多次就有多个进程. 2.这样并不是我们想要的.我们的守护进程一般都是服务器,服务器程序只要运行一个就够了,多次同时运 ...
- Python笔记_第四篇_高阶编程_检测_2.文档检测
1. 文档检测: 我们观察官方的函数编写的时候会在函数或者类当中有些类的备注,这些备注叫做文档.当我们在编写函数的时候,可以去显示这些文档.因此我们可以用这个文档来进行检测.另外我们还需要导入doct ...
- UVA 558 SPFA 判断负环
这个承认自己没看懂题目,一开始以为题意是形成环路之后走一圈不会产生负值就输出,原来就是判断负环,用SPFA很好用,运用队列,在判断负环的时候,用一个数组专门保存某个点的访问次数,超过了N次即可断定有负 ...
- PTA 自测-4 Have Fun with Numbers
#include<iostream> #include<string> #include<cstring> #include<vector> using ...
- Vue专题-js常用指令
vue.js官方给自己的定为是数据模板引擎,并给出了一套渲染数据的指令.本文详细介绍了vue.js的常用指令. vue.js常用指令 Vue.js使用方式及文本插值 Vue.js 使用了基于 HTML ...