leetcode题目链接:https://leetcode.com/problems/longest-common-prefix/description/
python实现
方法一:
class Solution(object): def longestCommonPrefix(self, strs): lens = len(strs) if lens==0: return "" newstrs = sorted(strs,key=lambda x:len(x)) if newstrs[0]=="": return "" if lens==1: return strs[0] mayprefix = newstrs[0] maxprefix = '' inf = 0 # 作为结束标记,跳出全部循环 i = 0 while i<len(mayprefix): for j in range(1,lens): if newstrs[j][i] != mayprefix[i]: maxprefix = mayprefix[:i] inf = 1 break if inf ==1: break maxprefix = mayprefix[:i+1] i+=1 return maxprefix strings = ['abc','abc','ab','a','abcd'] a = Solution() a.longestCommonPrefix(strings)
方法二:
# 方法二: class Solution(object): def longestCommonPrefix(self, strs): lens = len(strs) if lens==0: return "" newstrs = sorted(strs,key=lambda x:len(x)) if newstrs[0]=='': return "" if lens==1: return strs[0] mayprefix = newstrs[0] maxprefix = mayprefix #!!在此处进行了改动减少了下面循环中赋值的时间 inf = 0 # 作为结束标记,跳出全部循环 i = 0 while i<len(mayprefix): for j in range(1,lens): if newstrs[j][i] != mayprefix[i]: maxprefix = mayprefix[:i] inf = 1 break if inf ==1: break i+=1 return maxprefix strings = ['abc','abc','ab','a','abcd'] a = Solution() a.longestCommonPrefix(strings)
java实现
package test; public class Leetcode_14 { public String longestCommonPrefix(String[] strs) { if (strs==null || strs.length==0) { return ""; } String start = strs[0]; int len; for (int i = 0; i < strs.length; i++) { len = start.length() > strs[i].length()?strs[i].length():start.length(); int j; for (j = 0; j < len; j++) { if (start.charAt(j)!=strs[i].charAt(j)) { break; } } start = start.substring(0, j); } return start; } public static void main(String[] args) { String [] strings = {"ab","ab","abc"}; Leetcode_14 l= new Leetcode_14(); String result = l.longestCommonPrefix(strings); System.out.println(result); } }