题目:最长公共前缀
- 题号:14
- 难度:简单
- https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入:strs = ["flower","flow","flight"]
输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"]
输出:""
解释:输入不存在公共前缀。
提示:
- 1 <= strs.length <= 200
- 0 <= strs[i].length <= 200
- strs[i] 仅由小写英文字母组成
实现
C# 语言
public class Solution
{
public string LongestCommonPrefix(string[] strs)
{
if (strs.Length == 0)
return string.Empty;
string result = strs[0];
for (int i = 1; i < strs.Length; i++)
{
result = Prefix(result, strs[i]);
if (string.IsNullOrEmpty(result))
break;
}
return result;
}
public string Prefix(string str1, string str2)
{
int len1 = str1.Length;
int len2 = str2.Length;
int len = Math.Min(len1, len2);
int i = 0;
for (; i < len; i++)
{
if (str1[i] != str2[i])
break;
}
return i == 0 ? string.Empty : str1.Substring(0, i);
}
}
Python 语言
class Solution(object):
def longestCommonPrefix(self, strs):
"""
:type strs: List[str]
:rtype: str
"""
if len(strs) == 0:
return ""
result = strs[0]
for i in range(len(strs)):
result = self.Prefix(result, strs[i])
if result == "":
break
return result
def Prefix(self, str1, str2):
len1, len2 = len(str1), len(str2)
i = 0
while i < min(len1, len2):
if str1[i] != str2[i]:
break
i += 1
return "" if i == 0 else str1[0:i]