这个代码哪错了啊?题目和错误提示如下:

char * longestCommonPrefix(char ** strs, int strsSize){
    char *a = malloc(sizeof(char) * 10000);
    int j = 1, z = 0;
    if (strsSize == 0)
        return "";
    if (strsSize == 1)
        return strs[0];
    for (int i = 0; i < strlen(strs[0][i]); ++i) {
        while (strs[j][i] && strs[j - 1][i] == strs[j][i]) {
            j++;
        }
        if (j == strsSize) {
            j = 1;
            a[z++] = strs[0][i];
        }
        else
            break;
    }
    a[z] = '\0';
    return a;      
}

imageimage

阅读 2.1k
4 个回答

你返回了一个局部变量 a 。你 malloc 一下吧。

首先求字符串长度参数不对。

报错信息是while循环的j值越界了,需要判断j < strsSize

i < strlen(strs[0][i])

这里有问题

那个 SEGV 有点像 segmentation fault,我估计你数据越界了。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进