(78)最長公共字首
阿新 • • 發佈:2019-01-27
中等 最長公共字首
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); //擷取相同字串 } }