14.最长公共前缀

作者 by adtxl / 2022-04-14 / 暂无评论 / 240 个足迹

1. 题目描述

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

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

示例 1:

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

示例 2:

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

2. 题解

c++:

没想出来。。。看了题解。思路是;

image7ab07220c3fe52b3.png

class Solution {
public:
    string longestCommonPrefix(vector<string>& strs) {
        if(!strs.size()) {
            return "";
        }
        int length = strs.size();
        string result = strs[0];
        for(int i = 0; i < length; i++) {
            result = longestCommonPrefix(result, strs[i]);
            if (!result.size()) {
                break;
            }
        }

        return result;

    }

    string longestCommonPrefix(const string& str1, const string& str2) {
        int length = min(str1.size(), str2.size());
        int index = 0;
        while(index <= length && str1[index] == str2[index]) {
            index++;
        }

        return str1.substr(0, index);
    }
};
  • 知识点
    substr()函数
    std::string::substr

string substr (size_t pos = 0, size_t len = npos) const;

1.产生子串

返回一个新建的 初始化为string对象的子串的拷贝string对象。

子串是,在字符位置pos开始,跨越len个字符(或直到字符串的结尾,以先到者为准)对象的部分。

2.参数
pos
第一个字符的位置被复制为子串。
如果这是等于字符串的长度,该函数返回一个空字符串。
如果这是大于字符串的长度,它会抛出out_of_range。
注意:第一个字符表示为值0(不是1)。
len
获取子串的长度。
size_t is an unsigned integral type (the same as member type string::size_type).

3.返回值
A string object with a substring of this object.

独特见解