题目
题目分析
题目的意思是在一个字符串数组中,找出这些字符串拥有的最长的公共前缀子串,如“ab”,“abc”,“abd”最长的公共前缀子串是“ab”.
思路:采用动态的方法,首先找出任意两个字符串的最长前缀公共子串,然后再用该最长字符串去和剩余的字符串进行找最长公共子串的操作。如“ab”,“abc”,“abd”,“aef”:首先找到“ab”和“abc”的最长公共前缀字符串是“ab”,再用“ab”和“abd”进行比较,找到最长公共字符串“ab”,再用“ab”和“aef”做比较,找到最长前缀公共字符串“a”.具体流程见代码。
代码
public class Solution
{
public String longestCommonPrefix(String[] strs)
{
if(strs==null || strs.length==0)
return "";
String result=strs[0];
for (String x:strs)
{
int lenMin=result.length()>x.length()?x.length():result.length();
while (lenMin>=0)
{
result=result.substring(0,lenMin);
if(x.startsWith(result))
{
break;
}
lenMin--;
}
}
return result;
}
}