14. 最长公共前缀
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
lass Solution { public String longestCommonPrefix(String[] strs) { int len = strs.length; //此时数组为空 if(len == 0 ) return ""; //此时数组只有一个字符串 if(len == 1) return strs[0]; //初始化 找出长度最小的字符串 作为比较目标 int minIndex = 0; int minSize = strs[0].length(); for(int i = 1; i < strs.length; i++) { if(minSize > strs[i].length()) { minSize = strs[i].length(); minIndex = i; } } String temp="",temp1; int j ; for(int i = minSize; i >= 0; i--) { temp = strs[minIndex].substring(0,i); //比较开始 for( j = 0; j < strs.length; j++) { temp1 = strs[j].substring(0,i); if(!temp1.equals(temp)) break; } if(j == strs.length) return temp; } return ""; } }
C++:
class Solution { public: string longestCommonPrefix(vector<string>& strs) { if(strs.size() == 0) return ""; if(strs.size() == 1) return strs[0]; int minSize = strs[0].length(); int minIndex = 0; for(int i = 0; i < strs.size(); i++) { if(minSize > strs[i].length()) { minSize = strs[i].length(); minIndex = i; } } int j; string str1 = ""; //逐个比较 for(int i = 0; i < minSize; i++ ) { for(j = 0; j < strs.size(); j++) if(strs[minIndex][i] != strs[j][i]) return str1; //表示该字符是公共的子串之一 str1 += strs[minIndex][i]; } return str1; } };