【每日算法】LeetCode 14 —— 最长公共前缀(一百零六)

题目内容

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

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

示例

示例 1:
输入:strs = [“flower”,”flow”,”flight”]
输出:”fl”

示例 2:
输入:strs = [“dog”,”racecar”,”car”]
输出:””
解释:输入不存在公共前缀。

提示

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

题解

本题在思路上比较简单,就是遍历字符串,看前缀是否相同。在做法上,要注意如果本身strs为空,那么直接返回空字符串即可。如果不为空,当遍历到第i个位置的时候,如果某个字符串长度小于i,说明前缀最大长度已经取到,直接返回即可;或者某字符串的第i个位置的字符与即将作为公共前缀的字符不一致,则也说明到了前缀的最大长度,返回即可。

代码

class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
string res;
if(strs.empty()) return "";
for(int i = 0;;i++){
if(i >= strs[0].size()) return res;
char c = strs[0][i];
for(auto& str: strs){
if(str.size() <= i || str[i] != c)
return res;
}
res += c;
}
return res;
}
};
Author: Frederic Niu
Link: https://www.fredericniu.cn/2021/04/09/【每日算法】LeetCode-14-——-最长公共前缀(一百零六)/
Copyright Notice: All articles in this blog are licensed under CC BY-NC-SA 4.0 unless stating additionally.
我的公众号