问题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
解决:
思想:
其实思想很简单,我们将第一个字符串与第二个字符串进行对比(按照每列对比),将相同的字符保存起来,然后再将其与第三个子串对比。
python代码:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if(len(strs)==0): //考虑无元素与只有一个元素的情况
return ""
if(len(strs)==1):
return strs[0]
origined=strs[0]
strs_len=len(strs)
origined_len=len(origined)
for sub_str in strs[1:]: //将后续每个字符串与第一个进行对比
count=0
for j in range(min(len(origined),len(sub_str))): //每个位置的字符进行对比
if(origined[j]==sub_str[j]):
count+=1
else:
break
origined=origined[0:count]
return origined
c++代码:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.empty())
return "";
if(strs.size()==1)
return strs[0];
string origined=strs[0];
int origined_len=origined.size();
for(int i=1;i<strs.size();i++)
{
int count=0;
for(;count<min(origined.size(),strs[i].size());count++)
{
if(origined[count]!=(strs[i])[count])
break;
}
origined=origined.substr(0,count);
}
return origined;
}
};

303

被折叠的 条评论
为什么被折叠?



