题目
Write a function to find the longest common prefix string amongst an array of strings.
If there is no common prefix, return an empty string "".
Example 1:
Input: ["flower","flow","flight"]
Output: "fl"
Example 2:
Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
Note:
All given inputs are in lowercase letters a-z.
代码
二分法
class Solution {
public String longestCommonPrefix(String[] strs) {
if(strs==null||strs.length==0)
return "";
return startString(strs,0,strs.length-1);
}
private static String startString(String[] strs,int start,int end)
{
if(start==end)
{
return strs[start];
}
else
{
int mid = (start+end)>>1;
String a = startString(strs,start,mid);
String b = startString(strs,mid+1,end);
return twoForOne(a,b);
}
}
public static String twoForOne(String a,String b)
{
if(a==null||b==null)
return "";
int len = Math.min(a.length(),b.length());
for(int i=0;i<len;i++)
{
if(a.charAt(i)!=b.charAt(i))
{
return a.substring(0,i);
}
}
return a.substring(0,len);
}
}