下面的可能是最容易想到的最普通的题解了吧
垂直扫描法

import java.util.*;


public class Solution {
    /**
     * 
     * @param strs string字符串一维数组 
     * @return string字符串
     */
    public String longestCommonPrefix (String[] strs) {
        //特殊情况处理
        if(strs==null||strs.length==0) return "";
        if(strs.length==1) return strs[0];
        //找出长度最短字符串的元素的索引
        int minLengthIndex=0 ;
        for(int i=1;i<strs.length;i++){
            if(strs[i].length()<strs[minLengthIndex].length() ){
                minLengthIndex = i;
            }
        }
        //最短字符串交换到0号位置
        if(minLengthIndex!=0){
            String temp = strs[0];
            strs[0]=strs[minLengthIndex];
            strs[minLengthIndex]=temp;
        }
        //取出0号元素的第i个字符,查询后面元素的第i个字符是否与之相同
        for(int i=0;i<strs[0].length();i++){
            char ch = strs[0].charAt(i);
            for(int j=1;j<strs.length;j++){
                if(ch!=strs[j].charAt(i)){
                    //遇到不相同的返回0号元素前面已验证通过的子串//i=0时 会返回""
                    return strs[0].substring(0,i); 
                }
            }
        }
        //直到0号元素的字符遍历完毕,返回0号元素的值
        return strs[0];
    }
}