C ++ Не найти участников - PullRequest
       1

C ++ Не найти участников

1 голос
/ 05 августа 2020

Сообщение об ошибке : "std :: __ cxx11 :: basic_string «Нет членов» isSubsequence.

#include<iostream>
#include<string>
#include<unordered_map>
#include<vector>
using namespace std;

class Solution {
public:
    bool isSubsequence(string s, string t) {
        if(s.size()<t.size()) return false;
        unordered_map<char,int> window,need;
        for(char c:s) need[c]++;
        int left=0,right=0;
        int sum=0;
        while(right<t.size()){
            char c = t[right];
            right++;
            if(need.count(c)){
                window[c]++;
                if(window[c]==need[c]){
                    sum++;
                }
            }
            if(sum==need.size()){
                return true;
            }
        }
        return false;
    }
};

int main(){
    
    string s = "abc";
    string t = "ahbgdc";
    Solution s;
    s.isSubsequence(s,t);    
    return 0;
}

Почему объект не может вызывать функции-члены класса?

Ответы [ 3 ]

3 голосов
/ 05 августа 2020

У вас одно и то же имя для строки и объекта решения, что, вероятно, вызывает конфликты имен

2 голосов
/ 05 августа 2020

У вас конфликтующие имена переменных. У вас есть объект string с именем 's' и объект Solution с именем 's'. Вы хотите вызвать метод isSubsequence для объекта Solution, но вместо этого он запускается для объекта string. Просто измените имена переменных, и все будет хорошо.

0 голосов
/ 05 августа 2020

Здесь конфликт имен:

string s = "abc";
//     ^
string t = "ahbgdc";
Solution s;
s.isSubsequence(s,t);
^               ^

Возможно, вы хотели сделать:

string str = "abc";
string t = "ahbgdc";
Solution s;
s.isSubsequence(str, t);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...