LeetCode题解No14——“最长公共前缀”

LeetCode题解

No94

难度:Easy

题目描述:

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

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

示例 1:

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

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

来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
*/

题目思路

   本题比较简单,两重循环去套就可以,先想清楚思路,首先最长公共前缀,那么满足每一个字符串的匹配,那取第一个字符串当做模板,从他里面取出每一个字符进行比较,随后的字母如果有不匹配的,直接返回ans即可。如果i大于strs[j]的长度,也没有必要再比较,直接返回即可

代码执行

public class No14 {
   public static void main(String[] args) {
       String[] arr = {"fff","fss","f23"};
       String ans = longestCommonPrefix(arr);
       System.out.println(ans);
   }
   // 按行搜索
   public static String longestCommonPrefix(String[] strs) {
       // 特判
       int n = strs.length;
       if (n == 0){
           return "";
       }
       // 用一个StringBuffer来存放答案,方便后序的字母的添加
       StringBuffer ans = new StringBuffer();
       for (int i = 0; i < strs[0].length(); i++) {
           // 用一个cur来存放当前的一个字符
           char cur = strs[0].charAt(i);
           for (int j = 1; j < n; j++) {
               // 判断一个终止条件
               // 如果当前字符串的长度比i小,直接退出
               // 如果当前字符串的第i个字母和第一行的不匹配,退出
               if (strs[j].length() <= i || strs[j].charAt(i)!=cur){
                   return ans.toString();
               }
           }
           ans.append(cur);
       }
       return ans.toString();
   }
}

纠错

执行结果

posted @ 2020-09-15 14:09  Ivanpp  阅读(110)  评论(0编辑  收藏  举报