Longest Common Prefix
问题描述:
Write a function to find the longest common prefix string amongst an array of strings.
知识补充:
vector<string> strs;//相当于创建了一个二维字符串数组,里面可以存储字符串
strs.push_back("dsfsg");
strs.push_back("dsgcxv");
strs.size();//计算strs包含的元素个数,如果strs为空直接判断会在LeetCode中产生错误
python函数
zip();//zip函数接受任意多个(包括0个和1个)序列作为参数,返回一个tuple列表。
x = [1, 2, 3]
y = [4, 5, 6]
z = [7, 8, 9]
xyz = zip(x, y, z)//结果为[(1, 4, 7),(2, 5, 8),(3, 6, 9)]
enumerate()//利用它可以同时获得索引和值
list1 = ["这", "是", "一个", "测试"]
for index, item in enumerate(list1):
print index, item
测试代码(c++):
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0)
return "";
char prefix = '.';
string result = "";
for(int i=0;i<strs[0].length();i++)
{
prefix = strs[0][i];
for(int j=0;j<strs.size();j++)
{
if(prefix!=strs[j][i])
return result;
}
result = result + prefix;
}
return result;
}
性能:
测试代码(c++):
string longestCommonPrefix(vector<string>& strs) {
if(strs.size()==0)
return "";
string result = "";
result = strs[0];
for(int i=1;i<strs.size();i++)
{
if(result==strs[i].substr(0,result.size()))
continue;
for(int j=1;j<result.size()+1;j++)
{
if(result.substr(0,j)!=strs[i].substr(0,j))
result = result.substr(0,j-1);
if(result=="")
return result;
}
}
return result;
}
性能:
参考代码(Python):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if not strs:
return ""
for i, letter_group in enumerate(zip(*strs)):
if len(set(letter_group)) > 1:
return strs[0][:i]
else:
return min(strs)