Longest Common Prefix
Write a function to find the longest common prefix string amongst an array of strings.解题思路:这个题方法很简单,吸取之前用java过度封装的问题,改用c实现,只是简单的二维数组操作,设计一个标志位实现遍历,这道题比较简单,通过这道题复习了二维数组的知识。
代码如下:Accepted以后居然效率里面排名第一,真是不可思议。。。
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0) return "";
char * ct = strs[0];
int i = 0;
int max = 0;
int type = 0;
while (ct[i]!='\0')
{
char tm = ct[i];
for (size_t j = 0; j <strsSize;j++)
{
if (strs[j][i] == tm){
type = 1;
}else{
type = 0;
break;
}
}
if (type == 1){
max++;
}else{
break;
}
i++;
}
char *re = (char *)malloc(sizeof(char) *50);
int k = 0;
for (k = 0; k < max; k++)
{
re[k] = ct[k];
}
re[++k] = '\0';
return re;
}
char* longestCommonPrefix(char** strs, int strsSize) {
if (strsSize == 0) return "";
char * ct = strs[0];
int i = 0;
int max = 0;
int type = 0;
while (ct[i]!='\0')
{
char tm = ct[i];
for (size_t j = 0; j <strsSize;j++)
{
if (strs[j][i] == tm){
type = 1;
}else{
type = 0;
break;
}
}
if (type == 1){
max++;
}else{
break;
}
i++;
}
char *re = (char *)malloc(sizeof(char) *50);
int k = 0;
for (k = 0; k < max; k++)
{
re[k] = ct[k];
}
re[++k] = '\0';
return re;
}