假设首元素即为结果,那么其必然再后续所有字符串中完整出现。
进行迭代,两两比较,遇到不同元素则表示截至当前元素得最长公共前缀已得出
时间O(m*n)(m为每个元素平均长度,n为元素个数),空间O(1)
public String longestCommonPrefix(String[] strs) { if (strs.length==0) return ""; String res = strs[0]; for (int i=1;i<strs.length;i++){ int j=0;
// [0,i-1]的最长公共前缀和当前下标的元素进行比较,得出[0,i]的最长公共前缀的长度 for(;j<strs[i].length() && j<res.length();j++){ if (strs[i].charAt(j)!=res.charAt(j)){ break; } }
// 得出新一轮的比配长度后,对之前的结果进行截取 res = res.substring(0,j); if ("".equals(res)) return ""; } return res; }