[LeetCode] 14. 最长公共前缀

题目描述:

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

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

示例 1:

复制代码
输入:strs = ["flower","flow","flight"]
输出:"fl"

示例 2:

复制代码
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。

提示:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 仅由小写英文字母组成

题目链接:

. - 力扣(LeetCode)

解题主要思想:

这里提供两种解法,一是两两比较,然后找出公共部门再往后两两比较;另一种是一次比较所有字符串的一个位置。

解题代码:

(两两比较)

cpp 复制代码
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        string ret = strs[0];
        for (int i = 1; i < strs.size(); ++i) {
            ret = FindCommon(ret, strs[i]);
        }
        return ret;
    }
    string FindCommon(string& s1, string& s2)
    {
        int i = 0;
        while (i < min(s1.size(), s2.size()) && s1[i] == s2[i]) ++i;
        return s1.substr(0, i);
    }
};

(一次比较所有字符串的一个位置)

cpp 复制代码
class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        for (int i = 0; i < strs[0].size(); ++i) {
            char tmp = strs[0][i];
            for (int j = 1; j < strs.size(); ++j) {
                if (i == strs[j].size() || tmp != strs[j][i]) return strs[0].substr(0, i);
            }
        }
        return strs[0];
    }
};
相关推荐
林开落L1 分钟前
从入门到了解:Protobuf、JSON、XML 核心解析(C++ 示例)
xml·c++·json·protobuffer·结构化数据序列化机制
Queenie_Charlie5 分钟前
stars(树状数组)
数据结构·c++·树状数组
颜酱7 分钟前
二叉树遍历思维实战
javascript·后端·算法
宝贝儿好9 分钟前
第二章: 图像处理基本操作
算法
会周易的程序员19 分钟前
openplc runtimev4 Docker 部署
运维·c++·物联网·docker·容器·软件工程·iot
静听山水20 分钟前
Redis核心数据结构-Set
数据结构·数据库·redis
小陈phd20 分钟前
多模态大模型学习笔记(二)——机器学习十大经典算法:一张表看懂分类 / 回归 / 聚类 / 降维
学习·算法·机器学习
@––––––21 分钟前
力扣hot100—系列4-贪心算法
算法·leetcode·贪心算法
CoovallyAIHub28 分钟前
让本地知识引导AI追踪社区变迁,让AI真正理解社会现象
深度学习·算法·计算机视觉
爱装代码的小瓶子32 分钟前
【C++与Linux基础】进程间通讯方式:匿名管道
android·c++·后端