Мне нужен совет, чтобы решить эту проблему
/*Write either a C++ function int triplets(stack<string> words) or a Java method public static * int triplets(Stack<String> words) that take as the argument a stack of strings and count how * many elements are included in the stack exactly three times. You should use objects of type * set<string> in C++ or TreeSet<String> in Java. The set operations are given below (refer to * Problem 1 for the stack operations): */ #include <iostream> #include <stack> #include <set> #include <string> using namespace std; string popped=""; int triplets(stack<string>words) { set<string>set1{"wow", "AUA", "wow", "AUA", "Data Structures", "AUA", "OOP", "wow"} ; for(const auto &count: set1) { words.push(count); } for(int i=0; i<words.size(); i++) { for(int current=i; current<words.size(); current++) { popped=words.top(); } } }
Что я уже пробовал:
Я попытался решить эту проблему с помощью очереди, сравнивая фронт с тылом, но это было сложнее/
Richard MacCutchan
Вы просто копируете свой исходный стек в новый, но не делаете с ним ничего полезного. Вам нужно создать несколько новых списков (стеков?) для каждого уникального слова. Как только вы разделите их, вы можете пересчитать их, чтобы увидеть, какой список содержит три записи. Кроме того, набор слов - это параметр, передаваемый в вашу функцию, поэтому вам не нужно его создавать,это должен делать вызывающий функцию.
Member 13277493
большое вам спасибо за ответ, но не могли бы вы объяснить, что вы имеете в виду, разделяя их? :)