1.题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例:
输入: ["flower","flow","flight"]输出: "fl"输入: ["dog","racecar","car"]输出: ""解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
2.思路
老规矩,先做判断,如果传入的字符串数组为null或者字符串数组长度为0,则直接返回空字符串””。
然后我们来分析一下,最简单的,我们拿出第一个字符串的第一个字符,与第二个第三个……的第一个字符比较,若相等,则接着比较第二个字符,直到把第一个字符串的所有字符比较完,利用substring方法截取第一个字符串进行返回
public String longestCommonPrefix(String[] strs) {if (strs == null || strs.length == 0) {return "";}int length = strs[0].length();int count = strs.length;for (int i = 0; i < length; i++) {//总共的比较次数char c = strs[0].charAt(i);for (int j = 1; j < count; j++) {//用第一个字符串的第j位比较其他字符串的j位if (i == strs[j].length() || strs[j].charAt(i) != c) {return strs[0].substring(0, i);}}}return strs[0];}
菜狗如我,不看题解写不下来。这种方法是纵向比较,官方还给了横向比较、二分查找、分治的方法。
今天也是2020年最后一天了,新的一年继续加油吧,长路漫漫。
