14.最长公共前缀

来源:互联网 发布:php培训机构哪家好 编辑:程序博客网 时间:2024/06/06 00:06

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)

性能:

这里写图片描述