中等 最长公共前缀
27%
通过
给k个字符串,求出他们的最长公共前缀(LCP)
您在真实的面试中是否遇到过这个题?
Yes
样例
在 "ABCD" "ABEF" 和 "ACEF" 中, LCP 为 "A"
在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"
public class Solution {
/**
* @param strs: A list of strings
* @return: The longest common prefix
*/
public static String longestCommonPrefix(String[] strs) {
boolean flag = true; //定标记
int len = strs.length;
if(len == 0)
return "";
if(len == 1)
return strs[0];
int minlen = strs[0].length();
for(int i=0;i<len;i++) //找出最短长度
{
if(strs[i].length()<minlen)
minlen = strs[i].length();
}
if(minlen == 0)
return "";
int i = 0;
while(flag && i<minlen) //依次每个字符串最前面的字符比较,都一样则通过,遇到不同立刻停止
{
char s = strs[0].charAt(i);
for(int j=1;j<len;j++)
{
if(s != strs[j].charAt(i))
{
flag = false;
i--;
break ;
}
}
// System.out.println("前---"+i+"--"+s);
i++;
// System.out.println("后---"+i+"--");
}
// System.out.println(i);
return strs[0].substring(0, i); //截取相同字符串
}
}