14_最长公共前缀_LongestCommonPrefix

2018-06-07  本文已影响0人  zhyee_yan

问题链接

题目

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""

示例 1:

编写一个函数来查找字符串数组中的最长公共前缀。

如果不存在公共前缀,返回空字符串 ""。

示例 1:

输入: ["flower","flow","flight"]
输出: "fl"
示例 2:

输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:

所有输入只包含小写字母 a-z 。

解题思路

需要一个字符串作为模板,判断后面的字符串是否以这个模板为前缀,如果判断为false,则将模板字符串去掉最后一位再比较,如果任然为false,则再删去一位,递归调用至判断为true。这里使用的是第一个字符串为模板。

public String longestCommonPrefix(String[] strs) {
 if(strs.length == 0){
 return "";
 }
 if (strs[0].isEmpty() && strs.length == 1) {
 return "";
 }
 String shortest = strs[0];//以第一个字符串为准做对比
 for (int i = 0; i < strs.length; i++) {
 shortest = this.getShortest(strs[i], shortest);
 }
 return shortest;
​
 }
​
 private String getShortest(String s, String shortest) {
 if (s.indexOf(shortest) != 0) {
 shortest = shortest.substring(0, shortest.length() - 1);
 if (shortest.isEmpty()) {
 return "";
 }
 shortest = getShortest(s, shortest);//递归调用直到符合标准
 }
 return shortest;
 }
上一篇 下一篇

猜你喜欢

热点阅读