14.最长公共前缀
题目描述
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
C++
- 先进行判空操作
- 取第一个字符串作为基准,将之后的字符串的每一个字符与基准进行比较,一旦发现在某一字符上不匹配,就将基准截短
- 最后截得的基准就是最长公共前缀
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
int size=strs.size();
if(size==0)
return "";
if(size==1)
return strs[0];
//以字符数组中的第一个字符串作为基准进行比较
string s=strs[0];
for(int i=1;i<size;i++){
for(int j=0;j<s.length();j++){
if(s[j]!=strs[i][j]){
s=s.substr(0,j);//对s进行截断
break;
}
}
}
return s;
}
};
Python
- 利用Python中对字符串的比较,其按照ASCII进行排序
- 利用max()和min()取最大最小,他们的公共前缀就是整个字符数组的最长公共前缀
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:
return ""
s1 = min(strs)
s2 = max(strs)
for i, x in enumerate(s1):
if s2[i] != x:
return s2[:i]
return s1