Ошибка компиляции leetcode: конфликтующие типы для «xxx»

avatar
bluebluesky
8 апреля 2018 в 07:49
176
1
0

Я новичок в платформе leetcode. Я получил Compile Error, когда представил свое решение.
Ошибка связана с моей пользовательской функцией, но я успешно запустил код в кодовых блоках. Кто может сказать мне, почему?

int lengthOfLongestSubstring(char* s) {

    int longestSub = 1;

    for(int startIndex = 0, step = 1; startIndex + step < strlen(s); ){

        if(myNoRepeating(s+startIndex, step, s[startIndex+step])){
            step++;
            longestSub = step;
        } else {
            startIndex++;
        }

    }

    return longestSub;
}

int myNoRepeating(char *substring, int length, char next){
    for(int i = 0; i < length-1; i++){
        if(substring[length-1] == substring[i])
            return 0;
    }

    for(int i = 0; i < length; i++){
        if(next == substring[i])
            return 0;
    }
    return 1;
}

Статус кода выполнения: Ошибка компиляции

Результат выполнения кода: строка 19: конфликт типы для 'myNoRepeating'

Источник

Ответы (1)

avatar
Raviprakash
8 апреля 2018 в 08:15
0

Перед вызовом необходимо объявить прототип функции.

int myNoRepeating(char *substring, int length, char next);

Поместите этот оператор перед методом lengthOfLongestSubstring для устранения ошибки компиляции.

Другое решение — переупорядочить код следующим образом:

   int myNoRepeating(char *substring, int length, char next){
    for(int i = 0; i < length-1; i++){
        if(substring[length-1] == substring[i])
            return 0;
    }

    for(int i = 0; i < length; i++){
        if(next == substring[i])
            return 0;
    }
    return 1;
}
int lengthOfLongestSubstring(char* s) {

    int longestSub = 1;

    for(int startIndex = 0, step = 1; startIndex + step < strlen(s); ){

        if(myNoRepeating(s+startIndex, step, s[startIndex+step])){
            step++;
            longestSub = step;
        } else {
            startIndex++;
        }

    }

    return longestSub;
}