Ошибка при решении 20 задачи leetcode Valid Parentheses

Рейтинг: 0Ответов: 1Опубликовано: 03.03.2023
class Solution {
    public:
        bool isValid(string s) {
            for(int i=0; i<s.size() - 1; i++)
            {
                if(i<s.size()-1)
                {
                if(s[i]=="(" && s[i+1]==")")
                {
                    i++;
                }
                if(s[i]=="{" && s[i+1]=="}")
                {
                    i++;
                }
                if(s[i]=="[" && s[i+1]=="]")
                {
                    i++;
                }
                else
                {
                return false;
                }
                }
    
            }
            return true;
        }
    };
Ошибка компиляции:
Line 8: Char 20: warning: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Wstring-compare]
            if(s[i]=="(" && s[i+1]==")")
                   ^ ~~~
Line 8: Char 20: error: comparison between pointer and integer ('__gnu_cxx::__alloc_traits<std::allocator<char>, char>::value_type' (aka 'char') and 'const char *')
            if(s[i]=="(" && s[i+1]==")")
               ~~~~^ ~~~
Line 8: Char 35: warning: result of comparison against a string literal is unspecified (use an explicit string comparison function instead) [-Wstring-compare]
            if(s[i]=="(" && s[i+1]==")")
                                  ^ ~~~

введите сюда описание изображения

Ответы

▲ 0Принят

Ошибка компиляции связана с тем, что в условиях if вы используете двойные кавычки для сравнения строк Исправленный код:

class Solution {
public:
    bool isValid(string s) {
        for(int i=0; i<s.size() - 1; i++)
        {
            if(i<s.size()-1)
            {
                if(s[i]=='(' && s[i+1]==')')
                {
                    i++;
                }
                if(s[i]=='{' && s[i+1]=='}')
                {
                    i++;
                }
                if(s[i]=='[' && s[i+1]==']')
                {
                    i++;
                }
                else
                {
                    return false;
                }
            }
    
        }
        return true;
    }
};