LeetCode 14 Longest Common Prefix (C,C++,Java,Python)

來源:互聯網
上載者:User

標籤:c   c++   java   leetcode   python   

Problem:Write a function to find the longest common prefix string amongst an array of strings.
Solution:時間複雜度O(n)
題目大意:給一個字串數組,要找到這些字串的最大首碼公用子串。解題思路:既然是公用子串,那每個字串肯定都包含有,並且在頭部,首先把第一個字串作為預設最大,然後依次與後邊每一個字串對比,計算所有的最大匹配長度,長度最小的就是
Java原始碼(用時263ms):一涉及到字串處理,Java消耗的時間就遠遠比別的語言大
public class Solution {    public String longestCommonPrefix(String[] strs) {        if(strs.length==0)return "";        char[] str=strs[0].toCharArray();        int Min=str.length;        for(int i=1;i<strs.length;i++){            char[] s=strs[i].toCharArray();            int j=0;            while(j<Min && j<s.length && s[j]==str[j])j++;            Min = Min>j?j:Min;        }        return strs[0].substring(0,Min);    }}

C語言原始碼(用時6ms):
char* longestCommonPrefix(char** strs, int strsSize) {    char* str=strs[0];    int i,j;    if(strsSize==0)return "";    for(i=1;i<strsSize;i++){        j=0;        while(str[j] && strs[i][j] && str[j]==strs[i][j])j++;        str[j]=0;    }    return str;}

C++原始碼(用時8ms):
class Solution {public:    string longestCommonPrefix(vector<string>& strs) {        if(strs.size()==0)return "";        char* str=(char*)malloc(sizeof(char)*(strs[0].size()+1));        for(int i=0;i<strs[0].size();i++){            str[i]=strs[0][i];        }        str[strs[0].size()]=0;        for(int i=1;i<strs.size();i++){            int j=0;            while(str[j] && strs[i][j] && str[j]==strs[i][j])j++;            str[j]=0;        }        return string(str);    }};

Python原始碼(用時66ms):
class Solution:    # @param {string[]} strs    # @return {string}    def longestCommonPrefix(self, strs):        if len(strs)==0:return ""        str=strs[0]        Min=len(str)        for i in range(1,len(strs)):            j=0;p=strs[i]            while j<Min and j<len(p) and p[j]==str[j]:j+=1            Min = Min if Min<j else j        return str[:Min]


LeetCode 14 Longest Common Prefix (C,C++,Java,Python)

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.