力扣习题解法——第14题
力扣习题解法
第14题
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
示例 1:
输入: [“flower”,“flow”,“flight”]
输出: “fl”
示例 2:
输入: [“dog”,“racecar”,“car”]
输出: “”
解释: 输入不存在公共前缀。
说明:
所有输入只包含小写字母 a-z 。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/longest-common-prefix
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
下面是C#语言的一种解法:
public class Solution
{
public string LongestCommonPrefix(string[] strs)
{
if (strs.Length==0) return “”;
Array.Sort(strs);
string s1 = strs[0];
string s2 = strs[strs.Length - 1];
int i = 1;
int j = Math.Min(s1.Length, s2.Length);
for (i = 1; i <= j; i++)
{
if (s1.Substring(0,i) != s2.Substring(0,i))
break;
}
return s1.Substring(0,i-1);
}
}
这里用到了C#语言自带的函数Array.sort(),这个函数可以将字符串数组进行按字典排序,使我们的算法大大地简化了。使用该函数排序后,我们只需要判断第一个单词和最后一个单词的公共前缀,非常方便。
时间复杂度O(n)。