本篇图文是LSGO软件技术团队组织的 第二期基础算法(Leetcode)刻意练习训练营 的打卡任务。本期训练营采用分类别练习的模式,即选择了五个知识点(数组、链表、字符串、树、贪心算法),每个知识点选择了 三个简单、两个中等、一个困难 等级的题目,共计三十道题,利用三十天的时间完成这组刻意练习。
本次任务的知识点:字符串
字符串或串(string) 是由数字、字母、下划线组成的一串字符。一般记为 s = “a1a2...an”(n >= 0)
。它是编程语言中表示文本的数据类型。
通常以串的整体作为操作对象,如:在串中查找某个子串在该串中首次出现的位置、在串的某个位置上插入一个子串以及删除一个子串等。两个字符串相等的充要条件是:长度相等,并且各个对应位置上的字符都相等。串通常以顺序的方式进行存储与实现。
题号:14
难度:简单
https://leetcode-cn.com/problems/longest-common-prefix/
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""。
示例 1:
输入: ["flower","flow","flight"]
输出: "fl"
示例 2:
输入: ["dog","racecar","car"]
输出: ""
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z。
C# 语言
状态:通过
118 / 118 个通过测试用例
执行用时: 144 ms, 在所有 C# 提交中击败了 94.92% 的用户
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 语言
执行结果:通过
执行用时:44 ms, 在所有 Python3 提交中击败了 35.93% 的用户
class Solution:
def longestCommonPrefix(self, strs: List[str]) -> 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: str, str2: str) -> str:
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]
联系客服