面试题:最长公共前缀
难度:中等
给k个字符串,求出他们的最长公共前缀(LCP)
样例
在 "ABCD" "ABEF" 和 "ACEF" 中, LCP 为 "A"
在 "ABCDEFG", "ABCEFG", "ABCEFA" 中, LCP 为 "ABC"
答案:
1 public class Solution { 2 3 // 1. Method 1, start from the first one, compare prefix with next string, until end; 4 // 2. Method 2, start from the first char, compare it with all string, and then the second char 5 // I am using method 1 here 6 public String longestCommonPrefix(String[] strs) { 7 if (strs == null || strs.length == 0) { 8 return ""; 9 } 10 String prefix = strs[0]; 11 for(int i = 1; i < strs.length; i++) { 12 int j = 0; 13 while( j < strs[i].length() && j < prefix.length() && strs[i].charAt(j) == prefix.charAt(j)) { 14 j++; 15 } 16 if( j == 0) { 17 return ""; 18 } 19 prefix = prefix.substring(0, j); 20 } 21 return prefix; 22 } 23 24 }