题目
编写一个函数来查找字符串数组中的最长公共前缀。
如果不存在公共前缀,返回空字符串 “”。
c#
Substring
substring(x)是从字符串的的第x个字符截取
substring(x,y)是从x到y前的位置停止
思路
我的想法是以给定的数组元素中的第一个元素作为参考元素,将数组中的其他元素中的每一个字母与其进行比较,利用二层for循环,其中要保证没有超过第一个元素的长度而且也不能超出被比较元素的长度,最开始我将 if(i>=strs[j].Length||!strs[0][i].Equals(strs[j][i]))条件的顺序反过来写,结果运行错误,想起c++中老师说过有关||的判别方式后将顺序改变,结果运行成功。在其中字符串的比较要利用Equals这一内部函数。我借助了max计数,flag作标志进行迭代,最后得到下边的代码。
public class Solution {
public string LongestCommonPrefix(string[] strs) {
int i,j,max=0,flag=1;
if(strs.Length==0)
return "";
for(i=0;i<strs[0].Length;i++)
{
for(j=1;j<strs.Length;j++)
{
if(i>=strs[j].Length||!strs[0][i].Equals(strs[j][i]))
flag=0;
}
if(flag==1)
max++;
}
string m="";
if(max!=0)
{
m=strs[0].Substring(0,max);
}
return m;
}
}