leetcode 14
题目:
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 ""
。
示例 1:
输入:strs = ["flower","flow","flight"] 输出:"fl"
示例 2:
输入:strs = ["dog","racecar","car"] 输出:"" 解释:输入不存在公共前缀。
一点代码讲解:
//首先,判断字符串是否为空,或者长度是否为0,是则返回空
if (strs == null || strs.Length == 0)
{ return ""; }
//然后判断是否只有一个元素,如果是,则返回当前元素
if (strs.Length == 1)
{ return strs[0]; }
//接下来就是其他情况
//以第一个字符串为模板,按个往下循环找
用第一个字符串的第i个字符,挨个与后面的所有字符串第i个字符进行比较
//如果i不是当前字符串的长度,且当前字符串的第i个元素和第一个字符串的第i个元素相等
if (i != strs[j].Length && strs[j][i] == frist[i])
{
//则另b等于当前元素
b = frist[i].ToString();
}
else
{
b = "";//否则b为空
break;
}
然后每次循环到下一个字符的时候
if (b != "")//如果b不为空,则将当前字符添加到a里面
a = a + b;
else//若b为空,则跳出for循环
break;
最后return a;
答:
static string LongestCommonPrefix(string[] strs)
{
//首先,判断字符串是否为空,或者长度是否为0,则返回空
if (strs == null || strs.Length == 0)
{ return ""; }
if (strs.Length == 1)
{ return strs[0]; }
else
{
string a = "";
string b = "";
string frist = strs[0];//定义第一个字符串
for (int i = 0; i < frist.Length; i++)
{
//然后遍历剩下的字符串
for (int j = 1; j < strs.Length; j++)
{
//判断当前字符串的第i个元素是否和第一个字符串的第i个元素一致
if (i != strs[j].Length && strs[j][i] == frist[i])
{
b = frist[i].ToString();
}
else
{
b = "";
break;
}
}
if (b != "")
a = a + b;
else
break;
}
return a;
}
}