• leetcode 14. Longest Common Prefix


    题目内容

    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 "";
        }
    }
    

    拓展问题

  • 相关阅读:
    汉语-词语-从容:百科
    汉语-词语-伶俜:百科
    汉语-词语-心迹:百科
    汉语-词语-痛楚:百科
    汉语-词语-痛苦:百科
    汉语-词语:散步
    汉语-词语-憎恨:百科
    2455 繁忙的都市
    P2820 局域网
    NOIP2013Day1T3 表示只能过一个点
  • 原文地址:https://www.cnblogs.com/clnsx/p/12321897.html
Copyright © 2020-2023  润新知