编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
横向扫描法(暴力):先取数组首位为目标值,再遍历其余数组元素,与目标值各个字符依次比较,遇到不等的比较下一个数组元素并更新目标值。
class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length==0) return ""; StringBuilder res = new StringBuilder(strs[0]); for(int i=1; i<strs.length; i++){ int j=0; for(; j<strs[i].length()&&j<res.length(); j++){ if(res.charAt(j)!=strs[i].charAt(j)) break; } res.delete(j,res.length()); if(res.length()==0) return ""; } return res.substring(0); } }
纵向扫描法:从前往后依次遍历字符串的每一列,比较相同列的字符,直到某个字符达到长度上限或字符不等。
class Solution { public String longestCommonPrefix(String[] strs) { if(strs.length==0) return ""; for(int i=0; i<strs[0].length(); i++){ char c=strs[0].charAt(i); for(int j=1; j<strs.length; j++){ if(i==strs[j].length()||c!=strs[j].charAt(i)) return strs[0].substring(0,i); } } return strs[0]; } }
原文:https://www.cnblogs.com/faded828x/p/13138614.html