Longest Common Prefix —— Leetcode

Write a function to find the longest common prefix string amongst an array of strings.

本想用C++写,但想想太没挑战性,干脆直接用C。下面是代码,然而,和很多leetcoder提交的答案一样,在[""]这个测试用例下卡住了,不知为何。

方法很简单,就是所有字符串从第一个开始向后遍历,直到有不一样的,即为公共前缀,下面是C代码:

char *longestCommonPrefix(char *strs[], int n) {
    if(n == 0)  return "";
    if(n == 1)	return strs[0];
    
    int end_flag = 0;
    int i=0, j=0;
    
    while(!end_flag)
    {
    	for(i=0; i<n-1; i++)
    	{
    		if(strs[i][j]=='\0' || strs[i][j]!=strs[i+1][j])
    		{
    			end_flag = 1;
    			break;
    		}
    	}
    	j++;
    }
    char *prefix = (char *)malloc(j*sizeof(char));
    strncpy(prefix, strs[0], j-1);
    prefix[j-1] = '\0';
    return prefix;
}

你可能感兴趣的:(Longest Common Prefix —— Leetcode)