LeetCode 14. 最長公共字首(C、C++、python)
阿新 • • 發佈:2018-12-16
編寫一個函式來查詢字串陣列中的最長公共字首。
如果不存在公共字首,返回空字串 ""
。
示例 1:
輸入: ["flower","flow","flight"] 輸出: "fl"
示例 2:
輸入: ["dog","racecar","car"] 輸出: "" 解釋: 輸入不存在公共字首。
說明:
所有輸入只包含小寫字母 a-z
。
char* longestCommonPrefix(char** strs, int strsSize) { int n=strsSize; if(0==n) { return ""; } int length=strlen(strs[0])+1; char* tmp=(char*)malloc(sizeof(char)*length); char* res=(char*)malloc(sizeof(char)*length); int k=0; strcpy(tmp,strs[0]); for(int i=1;i<n;i++) { int m=strlen(strs[i])<strlen(tmp)?strlen(strs[i]):strlen(tmp); for(int j=0;j<m;j++) { if(tmp[j]==strs[i][j]) { res[k]=tmp[j]; k++; } else { break; } } if(0==strlen(res)) { return ""; } else { res[k]='\0'; strcpy(tmp,res); k=0; } } return tmp; }
C++
class Solution { public: string longestCommonPrefix(vector<string>& strs) { int n=strs.size(); if(0==n) { return ""; } string tmp=strs[0]; string res=""; for(int i=1;i<n;i++) { int len=min(tmp.length(),strs[i].length()); for(int j=0;j<len;j++) { if(tmp[j]==strs[i][j]) { res+=tmp[j]; } else { break; } } if(""==res) { return res; } else { tmp=res; res=""; } } return tmp; } };
python
class Solution: def longestCommonPrefix(self, strs): """ :type strs: List[str] :rtype: str """ n=len(strs) if 0==n: return "" tmp=strs[0] res="" for i in range(1,n): m=min(len(strs[i]),len(tmp)) for j in range(m): if tmp[j]==strs[i][j]: res+=tmp[j] else: break if ""==res: return res else: tmp=res res="" return tmp