最长相同前缀
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string ""
.
Example 1:
Input: ["flower","flow","flight"] Output: "fl"
Example 2:
Input: ["dog","racecar","car"] Output: "" Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z
.
找最长的相同的前缀就从前到后比较就好。
C++版本。
string longestCommonPrefix(vector<string>& strs){
if(strs.empty()) return "";
int len = strs.size();
int min = strs[0].length();
for(int i=1;i<len;i++){
if(min>strs[i].length()){//找短的作为基准比较
min = strs[i].length();
}
for(int j=0;j<min;j++){
if(strs[i][j]!=strs[i-1][j]){
min=j;//直到不相同,就break
break;
}
}
}
return strs[0].substr(0,min);
}
Python版本。Python会比C++简单点
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
res = ""
if(len(strs)==0):
return res
for i in xrange(len(min(strs))):
tmp = strs[0][i]
if all(a[i]==tmp for a in strs):#直接比较所有相同位置的字母
res = res + tmp
else:
break
return res