最长公共前缀(横向扫描,C++和python)
程序员文章站
2022-12-07 10:18:36
14. 最长公共前缀题目链接这道题点击去之后发现是两年前刷的了,好像是我刷的第一道力扣题,试了下自己现在写的代码比以前好多了,思路也更加清晰了。C++:class Solution {public: string longestCommonPrefix(vector& strs) { if(strs.size() == 0) return ""; string ans; for(int j = 0; j...
14. 最长公共前缀
题目链接
这道题点击去之后发现是两年前刷的了,好像是我刷的第一道力扣题,试了下自己现在写的代码比以前好多了,思路也更加清晰了。
C++:
class Solution {
public:
string longestCommonPrefix(vector<string>& strs) {
if(strs.size() == 0) return "";
string ans;
for(int j = 0; j < strs[0].size(); j++)
{
char temp = strs[0][j];
for(int i = 0; i < strs.size(); i++)
{
if(strs[i][j] != temp)
return ans;
}
ans += strs[0][j];
}
return ans;
}
};
python:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
if len(strs) == 0: return ''
ans = ''
for j in range(0, len(strs[0])):
temp = strs[0][j]
for i in range(0, len(strs)):
if(j >= len(strs[i]) or strs[i][j] != temp):
return ans
ans += strs[0][j]
return ans
后来发现官方执行用时最少的代码是用zip打包二维数组每列元素为列表实现,对于这道题是真的适合,针不戳!
python:
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> str:
res = ""
letters_list = list(zip(*strs))
for letters in letters_list:
if len(set(letters)) == 1:
res += letters[0]
else:
break
return res
zip函数使用方法可以参考:链接
如果对你有帮助的话,请点个赞哦!
本文地址:https://blog.csdn.net/qq_41946404/article/details/109954158
上一篇: c++#数组#思维导图