1. 程式人生 > >(78)最長公共字首

(78)最長公共字首

中等 最長公共字首

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);            //擷取相同字串

    }
}