LeetCode Python, Java, C++  >  字符串  >  14. 最长公共前缀  >  已支持 Ruby, Python, Java  >  GitHub转发

力扣链接:14. 最长公共前缀,难度等级:简单

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

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

示例 1:

输入: strs = ["flower","flow","flight"]

输出: "fl"

示例 2:

输入: strs = ["dog","racecar","car"]

输出: ""

解释: 输入不存在公共前缀。

约束:

  • 1 <= strs.length <= 200
  • 0 <= strs[i].length <= 200
  • strs[i] 如果非空,则仅由小写英文字母组成

思路

站长 (张健): 👋

大家好!我是张健。

我深知学习算法和找到好工作之间的挑战。因此,除了这个项目,我个人还开发了 leader.me — 这是程序员打造个人IP的终极平台,包含作品集、简历和博客等。
🚀 掌握算法是基础,而 leader.me 助您完美展示技能,顺利拿到 Offer!

立即前往 leader.me 打造你的程序员专属个人IP →


  1. 查找最长公共前缀,可以从左向右,以第一个字符串的字符为基准。
  2. 如果后面的字符串的当前字符不等于基准字符,则返回结果。每一轮循环下来,都把基准字符加入到公共前缀中。

复杂度

时间复杂度

O(M * N)

空间复杂度

O(1)

题解语言: Ruby Python Java

Ruby #

# @param {String[]} strs
# @return {String}
def longest_common_prefix(strs)
  result = ''

  (0...strs[0].size).each do |i|
    char = strs[0][i]

    strs[1..].each do |str|
      if str[i] != char
        return result
      end
    end

    result << char
  end

  result
end

Python #

class Solution:
    def longestCommonPrefix(self, strs: List[str]) -> str:
        result = ''

        for i in range(len(strs[0])):
            char = strs[0][i]

            for string in strs[1:]:
                if i >= len(string) or string[i] != char:
                    return result

            result += char

        return result

Java #

class Solution {
    public String longestCommonPrefix(String[] strs) {
        var result = "";

        for (var i = 0; i < strs[0].length(); i++) {
            var c = strs[0].charAt(i);

            for (var j = 1; j < strs.length; j++) {
                if (i >= strs[j].length() || strs[j].charAt(i) != c) {
                    return result;
                }
            }

            result += c;
        }

        return result;
    }
}
题解语言: Ruby Python Java

其它语言

欢迎贡献代码到 LeetCode.blog GitHub -> 14. 最长公共前缀。感谢!

打造你的开发者个人IP

🚀 掌握算法是成功的基石,而全方位展示你的才华则是获得垂青的关键。
我的另一个项目 leader.me —— 专为程序员打造的“全能型”个人品牌展示平台。

三位一体(All-In-One)的职场利器:

  • 📄 简历 + 作品集 + 博客: 将你的 GitHub 项目、技术心得与职场经历完美融合。
  • 🌐 永久免费自定义域名: 支持绑定你自己的独立域名,且该功能永久免费。
  • 顶级行业子域名: 提供 name.leader.me —— 极具职业含金量的专属域名。

立即前往 leader.me 打造你的个人品牌 →