最长公共前缀--LeetCode

最长公共前缀

题目(出自LeetCode)

  • 编写一个函数来查找字符串数组中的最长公共前缀。
    如果不存在公共前缀,返回空字符串 ""。

  • 示例 1:
    输入:strs = ["flower","flow","flight"]
    输出:"fl"

  • 示例 2:
    输入:strs = ["dog","racecar","car"]
    输出:""
    解释:输入不存在公共前缀。

  • 提示:

    • 0 <= strs.length <= 200
    • 0 <= strs[i].length <= 200
    • strs[i] 仅由小写英文字母组成

题解

  • 先把第一个字符串当作前缀pre
  • 然后找出pre与第二个字符串的最长前缀,并赋值给pre,此时pre就是第一、二个字符串的公共前缀了
  • 同理找出pre与第三个字符串的最长前缀,并赋值给pre,此时pre就是第一、二、三个字符串的公共前缀了
  • 依次类归

代码(java)

class Solution {
    public String longestCommonPrefix(String[] strs) {
        if(strs==null||strs.length==0) return "";
        String pre = strs[0];
        for(int i=1; i<strs.length; ++i){
            pre = findCommonPrefix(pre,strs[i]);
        }
        return pre;
    }

    public String findCommonPrefix(String pre, String str){
        while(!str.startsWith(pre)){  //也可使用indexOf
            pre = pre.substring(0,pre.length()-1);
        }
        return pre;
    }
}

运行结果

  • 执行用时:0 ms, 在所有 Java 提交中击败了100.00%的用户
  • 内存消耗:36.3 MB, 在所有 Java 提交中击败了91.53%的用户
posted @ 2021-05-26 10:19  金鱼同学  阅读(61)  评论(0编辑  收藏  举报