欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

最长公共前缀(横向扫描,C++和python)

程序员文章站 2022-05-09 17:58:27
14. 最长公共前缀题目链接这道题点击去之后发现是两年前刷的了,好像是我刷的第一道力扣题,试了下自己现在写的代码比以前好多了,思路也更加清晰了。C++:class Solution {public: string longestCommonPrefix(vector& strs) { if(strs.size() == 0) return ""; string ans; for(int j = 0; j...

14. 最长公共前缀

题目链接
最长公共前缀(横向扫描,C++和python)
这道题点击去之后发现是两年前刷的了,好像是我刷的第一道力扣题,试了下自己现在写的代码比以前好多了,思路也更加清晰了。
最长公共前缀(横向扫描,C++和python)
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