码迷,mamicode.com
首页 > 其他好文 > 详细

leetcode 14. Longest Common Prefix

时间:2020-02-17 16:13:55      阅读:16      评论:0      收藏:0      [点我收藏+]

标签:cas   length   快速   common   alt   最简   UNC   归类   获得   

题目内容

Write a function to find the longest common prefix string amongst an array of strings.

If there is no common prefix, return an empty string "".
Example:
Input: ["flower","flow","flight"]
Output: "fl"
Example 2:

Input: ["dog","racecar","car"]
Output: ""
Explanation: There is no common prefix among the input strings.
Note:

All given inputs are in lowercase letters a-z.

分析过程

  • 题目归类:
    垂直比较
    技术图片

  • 题目分析:
    最简单的思路就是从头开始,第一轮比较第一个字符,第二轮比较第二个字符·····这样的效率比较低。
    新的方法是,(接下来的数组代表字符串,0代表strs[0])0和1比较后存到0,然后0和2比较后保存到0·····
    利用String.substring(左闭右开)可以快速获得前缀。
  • 边界分析:
    • 空值分析
      当strs为空时当然返回""
    • 循环边界分析
  • 方法分析:
    • 数据结构分析
    • 状态机
    • 状态转移方程
    • 最优解
  • 测试用例构建

代码实现

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs==null||strs.length==0){
            return "";
        }
        for(int i = 1;i<strs.length;i++){
            strs[0]=findPrefix(strs[0],strs[i]);
            if(strs[0].length()==0)
                return "";
        }
        return strs[0];
    }
    public String findPrefix(String a, String b){
        if(a.length()==0||b.length()==0)
            return "";
        int length = a.length()<=b.length()?a.length():b.length();
        for(int i = length; i>-1;i--){
            if(a.substring(0,i).equals(b.substring(0,i))){
                return a.substring(0,i);
            }
        }
        return "";
    }
}

拓展问题

leetcode 14. Longest Common Prefix

标签:cas   length   快速   common   alt   最简   UNC   归类   获得   

原文地址:https://www.cnblogs.com/clnsx/p/12321897.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有 京ICP备13008772号-2
迷上了代码!