最长公共前缀 leetcode 14
方法一(纵向扫描)
解题思路
先计算出数组中最小的字符串长度,这样就避免了越界的情况,思路更加明确,但同时时间复杂度就相应的上升了。
先计算所有字符串在同一列上的字符是否相同,然后依次向后延伸。
代码及注释
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
//如果数组中没有字符串,则直接返回空字符串
if(strs.size()==) return "";
//结果字符串
string ans = "";
int n = strs[].size();
for(int i=;i<strs.size();i++){
if(strs[i].size()<n){
n=strs[i].size();
}
}
//利用前一个和后一个字符串所对应的字符是否相等判断是否具有公共前缀
//没有则直接退出返回当前ans
int flag = ;
for(int i=;i<n;i++){
for(int j=;j<strs.size()-;j++){
if(strs[j][i]!=strs[j+][i]){
flag = ;
break;
}
}
if(flag==){
return ans;
}
ans+=strs[][i];
}
return ans;
}
};
方法二(水平扫描法)
思路
将第一个字符作为ans,然后不断和后面的字符串进行计算他们的公共前缀然后更新,最后的结果即为最长公共前缀
代码及注释
class Solution {
public:
//返回两个字符串的公共前缀
string CommonPrefix(string a,string b){
int i=,j=;
string t = "";
while(i<a.size()&&j<b.size()&&a[i]==b[j]){
t+=a[i];
i++;
j++;
}
return t;
}
string longestCommonPrefix(vector<string>& strs) {
//数组长度为0返回空字符串
if(strs.size()==) return "";
//数组长度为1返回第一个字符串
if(strs.size()==) return strs[];
//将第一个字符串作为ans,不断与后面的字符串计算公共前缀然后更新ans,如果ans为空则直接返回ans;
string ans = strs[];
for(int i=;i<strs.size();i++){
ans = CommonPrefix(ans,strs[i]);
if(ans=="") return ans;
}
return ans;
}
};
方法三(分治法)
思路

代码及注释
class Solution {
public:
//返回两个字符串的公共前缀
//也是分治法的合
string merge(string a,string b){
int i=,j=;
string t = "";
while(i<a.size()&&j<b.size()&&a[i]==b[j]){
t+=a[i];
i++;
j++;
}
return t;
}
//分治法的分
string divide(vector<string>& strs,int left,int right){
//当分到最后只有一个字符串时直接返回,因为一个字符串的公共前缀就是他的本身
if(left==right){
return strs[left];
}else{
//将数组一分为二
int mid = (left+right)/;
string leftString = divide(strs,left,mid);
string rightString = divide(strs,mid+,right);
//再通过合并各个分组的公共前缀
return merge(leftString,rightString);
}
}
string longestCommonPrefix(vector<string>& strs) {
//数组长度为0返回空字符串
if(strs.size()==) return "";
//数组长度为1返回第一个字符串
if(strs.size()==) return strs[];
//利用分治法计算
return divide(strs,,strs.size()-);
}
};
最长公共前缀 leetcode 14的更多相关文章
- LeetCode:最长公共前缀【14】
LeetCode:最长公共前缀[14] 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flo ...
- 14. 最长公共前缀----LeetCode
编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower","flow" ...
- 【Leetcode】【简单】【14最长公共前缀】【JavaScript】
题目 14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...
- LeetCode 14. 最长公共前缀(Longest Common Prefix)
14. 最长公共前缀 14. Longest Common Prefix 题目描述 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". Lee ...
- Java实现 LeetCode 14 最长公共前缀
14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",&quo ...
- LeetCode 14 Longest Common Prefix(最长公共前缀)
题目链接:https://leetcode.com/problems/longest-common-prefix/?tab=Description Problem: 找出给定的string数组中最 ...
- # Leetcode 14:Longest Common Prefix 最长公共前缀
公众号:爱写bug Write a function to find the longest common prefix string amongst an array of strings. If ...
- python刷LeetCode:14. 最长公共前缀
难度等级:简单 题目描述: 编写一个函数来查找字符串数组中的最长公共前缀. 如果不存在公共前缀,返回空字符串 "". 示例 1: 输入: ["flower",& ...
- 【LeetCode】14. Longest Common Prefix 最长公共前缀
作者: 负雪明烛 id: fuxuemingzhu 个人博客:http://fuxuemingzhu.cn/ 个人公众号:负雪明烛 本文关键词:prefix, 公共前缀,题解,leetcode, 力扣 ...
随机推荐
- OpenCV 新手教程 之环境配置 + 图片匹配 matchTemplate
1.什么是OpenCV OpenCV的全称是:Open Source Computer Vision Library. OpenCV是一个基于(开源)发行的跨平台计算机视觉库,能够执行在Linux.W ...
- Warning!程序员们小心被技术绑架
通常我们说程序员需要在某个技术方向上积累到一定的厚度,要能够运用技术有效地解决实际问题.可是当程序员在某一项技术上浸淫时间长了之后,却经常会出现另外的问题,那就是:看待问题时受限于自身的技术积累. 我 ...
- 中国联通与阿里云达成合作,推动5G+新媒体产业发展
4月24日在中国联通合作伙伴大会上,阿里云与中国联通签署合作协议,未来双方将基于各自优势,聚焦5G时代下的超高清视频发展. 随着5G时代到来,视频不再被网速制约,超短延时.计算节点下沉等特性将更高清. ...
- 03寻找最小的k个数
题目描述:查找最小的k个元素 题目:输入n个整数,输出其中最小的k个. 例如输入1,2,3,4,5,6,7和8这8个数字,则最小的4个数字为1,2,3和4. 1:最简单 ...
- PAN-OS 6.1 Open Source Software (OSS) Listing
https://www.paloaltonetworks.com/documentation/oss-listings/oss-listings/pan-os-oss-listings/pan-os- ...
- 2018-10-15-Winforms-可能遇到的-1000-个问题
title author date CreateTime categories Winforms 可能遇到的 1000 个问题 lindexi 2018-10-15 09:35:15 +0800 20 ...
- behavior planning——15.cost function design weightTweaking
Designing cost functions is difficult and getting them all to cooperate to produce reasionable vehic ...
- vue tab栏缓存解决跳转页面后返回的状态保持
<!DOCTYPE html> <html lang="zh-cn"> <head> <meta charset="UTF-8& ...
- Android 设置TextView字体颜色
设置TextView字体的颜色其实很简单,尤其是直接在XML文件中,可以直接通过textColor属性指定颜色值,达到设置文本颜色的效果:那在代码中如何动态设置字体的颜色值呢? 接下来,介绍如何通过J ...
- jq常用动画fade slide
https://www.cnblogs.com/sandraryan/ hide(); <div class="box">big box</div> $(' ...