import java.util.*;


public class Solution {
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     *
     * @param strs string字符串一维数组
     * @return string字符串
     */
    public String longestCommonPrefix (String[] strs) {
        // write code here

        // 0.处理特殊情况
        if (strs.length == 0) {
            return "";
        }
        if (strs.length == 1) {
            return strs[0];
        }

        // 1.按照长度从小到大给strs排序
        Arrays.sort(strs, (s1, s2) -> s1.length() - s2.length());

        // 2.从0位置开始检查strs中所有字符串的情况
        int i = 0;
        boolean flag = true;
        while (i < strs[0].length() && flag) {
            // i不越界且没发现不一致
            char c = strs[0].charAt(i);
            for (int j = 1; j < strs.length; j++) {
                if (strs[j].charAt(i) != c) {
                    // 发现了不一致,则最长公共前缀为strs[0]的0 ~ i-1字符
                    flag = false;
                    break;
                }
            }
            if (flag) {
                // 若发现了不一致,则不必让i自增
                i++;
            }
        }

        // 3.截取strs[0]的0 ~ i-1字符返回
        return strs[0].substring(0, i);
    }
}