首页 > 其他 > 详细

【LeetCode】14. Longest Common Prefix

时间:2016-12-22 14:29:07      阅读:236      评论:0      收藏:0      [点我收藏+]

Write a function to find the longest common prefix string amongst an array of strings.

题意:找出所给几个字符串的相同前缀

思路:用第一个字符串和之后的所有字符串进行对比,标示出相同字符串的超尾指针就行

ps:通过这个题发现自己Python基础好差啊

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if len(strs)==0: return ‘‘
 8         str = strs[0]
 9         min = len(str)
10         for i in range(1, len(strs)):
11             j=0
12             tmp = strs[i]
13             while j<min and j<len(tmp) and str[j] == tmp[j]:
14                 j+=1
15             if j<min: min = j
16         
17         return str[:min]

 耗时84ms,排名太靠后了,不能忍

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if len(strs)==0: return ‘‘
 8         str = strs[0]
 9         min = len(str)
10         for tmp in strs[1:]:
11             j=0
12             while j<min and j<len(tmp) and str[j]==tmp[j]:
13                 j+=1
14             if j<min: min=j
15         
16         return str[:min]

 耗时59ms,好了点,但还是不理想

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if len(strs)==0: return ‘‘
 8         str = strs[0]
 9         min = len(str)
10         for tmp in strs[1:]:
11             j = 0
12             l = len(tmp)
13             while j<min and j<l and str[j]==tmp[j]:
14                 j+=1
15             if j<min: min=j
16         
17         return str[:min]

把重复计算的min = len(str)保存后,变成了49ms,len()耗时挺长啊,感觉还能继续改

 1 class Solution(object):
 2     def longestCommonPrefix(self, strs):
 3         """
 4         :type strs: List[str]
 5         :rtype: str
 6         """
 7         if len(strs)==0: return ‘‘
 8         str = strs[0]
 9         min = len(str)
10         for tmp in strs[1:]:
11             j = 0
12             l = len(tmp)
13             while j<min and j<l and str[j]==tmp[j]:
14                 j+=1
15             min=j     #不用判断,j的值肯定小于min,直接更新
16         
17         return str[:min]

又减了4ms

感觉还能改,但是不知道怎么改了。。。

没办法,

只有这样了。。

!!!!

0ms

 1 char* longestCommonPrefix(char** strs, int strsSize) {
 2     if(!strsSize) return "";
 3     char *str=strs[0];
 4     int i,j;
 5     for(i=1;i<strsSize;i++){
 6         j=0;
 7         while(str[j]&&strs[i][j]&&str[j]==strs[i][j])
 8             j++;
 9         str[j]=\0;
10     }
11     return str;
12 }

 

【LeetCode】14. Longest Common Prefix

原文:http://www.cnblogs.com/fcyworld/p/6210846.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!