美文网首页每日一练
每日一练(35):最长公共前缀

每日一练(35):最长公共前缀

作者: 加班猿 | 来源:发表于2022-03-14 17:34 被阅读0次

title: 每日一练(35):最长公共前缀

categories:[剑指offer]

tags:[每日一练]

date: 2022/03/14


每日一练(35):最长公共前缀

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

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

示例 1:

输入:strs = ["flower","flow","flight"]

输出:"fl"

示例 2:

输入:strs = ["dog","racecar","car"]

输出:""

解释:输入不存在公共前缀。

提示:

1 <= strs.length <= 200

0 <= strs[i].length <= 200

strs[i] 仅由小写英文字母组成

来源:力扣(LeetCode)

链接:https://leetcode-cn.com/problems/longest-common-prefix

方法一:逐字符比较

思路分析

先第一个和第二个比,保存公共前缀,再和第三个比,以此类推

string longestCommonPrefix(vector<string>& strs) {
    if (strs.size() == 0) {
        return "";
    }
    string ans = strs[0];//先从strs[0]开始,与后面一个比较
    for (int i = 0; i < strs.size(); i++) {
        string s = ans;//保存上次的公共前缀
        ans = "";
        for (int j = 0; j < strs[i].size(); j++) {
            if (s[j] == strs[i][j]) {
                ans += s[j];
            } else { //遇到不一样的就退出循环
                break;
            }
        }
        if (ans == "") {
            break;
        }
    }
    return ans;
}

方法二:双指针

算法流程:

先找出数组中字典序最小和最大的字符串,最长公共前缀即为这两个字符串的公共前缀

string longestCommonPrefix(vector<string>& strs) {
    if (strs.size() == 0) {
        return "";
    }
    const auto p = minmax_element(strs.begin(), strs.end());
    for (int i = 0; i < p.first->size(); i++) {
        if (p.first->at(i) != p.second->at(i)) {
            return p.first->substr(0, i);
        }
    }
    return *p.first;
}

相关文章

  • 每日一练(35):最长公共前缀

    title: 每日一练(35):最长公共前缀 categories:[剑指offer] tags:[每日一练] d...

  • LeetCode 每日一题 [19] 最长公共前缀

    LeetCode 最长公共前缀 [简单] 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回...

  • 35 - Easy - 最长公共前缀

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

  • 14. 最长公共前缀

    20180923-摘抄自14. 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,...

  • 5,最长公共前缀/数组与字符串

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

  • Swift 最长公共前缀 - LeetCode

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

  • leetcode探索之旅(14)

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

  • Leetcode 14 最长公共前缀

    最长公共前缀 题目 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

  • LeetCodeSwift 14.Longest Common

    题目 最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串 ""。 示例...

  • [day4] [LeetCode] [title14,122]

    14.最长公共前缀 编写一个函数来查找字符串数组中的最长公共前缀。 如果不存在公共前缀,返回空字符串""。 示例 ...

网友评论

    本文标题:每日一练(35):最长公共前缀

    本文链接:https://www.haomeiwen.com/subject/cclsdrtx.html