领扣(LeetCode)最长公共前缀 个人题解
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入: ["flower","flow","flight"] 输出: "fl"
示例 2:
输入: ["dog","racecar","car"] 输出: "" 解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z
。
这题比较简单,采用O(m*n)的算法复杂度,即对每个串内的字符一个字符一个字符判断,可以比较容易解决问题。不过要注意字符串数组越界的问题。
代码如下:
1 class Solution { 2 public String longestCommonPrefix(String[] strs) { 3 String ans = ""; 4 if (strs.length == 0) 5 return ans; 6 int minlen = strs[0].length(); 7 for (String string : strs) { 8 if (string.length() < minlen) 9 minlen = string.length(); 10 } 11 for (int i = 0; i < minlen; i++) { 12 char tmp = strs[0].charAt(i); 13 for (int j = 1; j < strs.length; j++) { 14 15 if (strs[j].charAt(i) == tmp) 16 continue; 17 else 18 return ans; 19 } 20 ans += tmp; 21 } 22 return ans; 23 } 24 }