Loading...
spasimira25 avatar spasimira25 25 Точки

Задача 2 Odd Occurrences

Здравейте, нещо блокирах на 2-ра задача от асоциативните контейнери. Дава ми грешен отговор на тест1 и тест4. Време и памет са ок.

#include <iostream>
#include <map>// въпреки, че не ги ползвам пробвах едно решение с тях и не ми хареса...
#include <unordered_map>
#include <vector>
#include <string>
#include <sstream>
using namespace std;
int main (){
    setlocale(LC_ALL,"bulgarian");// абсолютно ненужно
    string str;
    getline(cin, str);
    stringstream ss;
    vector<pair <string, int>> myVector;
    ss << str;
    string temp;

    while (!ss.eof()) {
    ss >> temp;
    string lowString="";
    bool is_exist=false;
    // следва превръщане в малки букви
    for(int i=0;i<temp.size();i++ ){
        lowString+=tolower(temp[i]);
    }/// следва проверка дали вече има подобен стринг
     for (int i=0;i<myVector.size();++i ){
                if( myVector[i].first==lowString){
                        myVector[i].second++;/// ако го има увеличавам втория пейр и брейквам, няма смисъл да продължавам да търся
                            is_exist=true;break;}
            }
    if (is_exist==false){myVector.push_back(make_pair(lowString, 1));}///ако го няма създавам нова двойка във вектора
    }
/// следва печат, не знам дали има друг метод, за добавяне на запетайки, без да се добави на последния елемент
    vector<string> outVector;
    for (int i=0;i<myVector.size();i++){
        if (myVector[i].second%2==1){outVector.push_back(myVector[i].first);}
    }
    for (int i=0;i<outVector.size()-1;i++){
        cout<<outVector[i]<<", ";
    }
    cout<<outVector[outVector.size()-1]<<endl;

  }

 

Тагове:
0
C++ Fundamentals
Vankata83 avatar Vankata83 72 Точки
Best Answer

Здравей колега

Смених !ss.eof() с ss >> temp и работата стана. Естествено трябва ss >> temp да го изтриеш от бодито на цикъла.

Честно казано нямам представа какво ТОЧНО прави eof като метод :)

1
Vankata83 avatar Vankata83 72 Точки

Между другото аз съм използвал map и vector и ми заема 1.82 MB, а като пробвах твоето решение ми зае 2.07 MB

Не знам дали judge е фактор в това (натовареност и др.)

Само вмятам :)

1
spasimira25 avatar spasimira25 25 Точки

Огромно благодаря, Ванка. Принципно еоф "чете" до края на файл, и понеже стрийма е горе-долу унифициран, в случая "чете" до края на реда, който съм взел с гетлайн. За съжаление, ако накрая на реда (след последния стринг ) има набити няколко интервала, не се държи нормално. Използвах го за 1-ва задача и сработи на 100%. Ако си я тествам обаче аз и сложа 2-3 интервала се сбърква runtime. Същото е и с 2-ра. Няколко допълнителни интервала на края и умира. Явно това е било и в джъдж. На 2 от  тестовете има 2(или повече) интервала, а не 1. Няма да го ползвам повече.

Още веднъж, благодаря. Спести ми много нерви :)  Цял следобед я мъча.
Поздрави, Тошо.

0
spasimira25 avatar spasimira25 25 Точки

А принципно става 2.07, заради едно setlocale(LC_ALL,"bulgarian"); което сложих от нямане какво да праявя.
Принципно е за да печата на кирилица на конзолата. Не се сработи с писането обаче. Като го махнах стана 1.82МБ
е и от инклудовете изтрих маповете...

 

0
Vankata83 avatar Vankata83 72 Точки

Вече и аз знам какво прави eof :)

0
Можем ли да използваме бисквитки?
Ние използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Можете да се съгласите с всички или част от тях.
Назад
Функционални
Използваме бисквитки и подобни технологии, за да предоставим нашите услуги. Използваме „сесийни“ бисквитки, за да Ви идентифицираме временно. Те се пазят само по време на активната употреба на услугите ни. След излизане от приложението, затваряне на браузъра или мобилното устройство, данните се трият. Използваме бисквитки, за да предоставим опцията „Запомни Ме“, която Ви позволява да използвате нашите услуги без да предоставяте потребителско име и парола. Допълнително е възможно да използваме бисквитки за да съхраняваме различни малки настройки, като избор на езика, позиции на менюта и персонализирано съдържание. Използваме бисквитки и за измерване на маркетинговите ни усилия.
Рекламни
Използваме бисквитки, за да измерваме маркетинг ефективността ни, броене на посещения, както и за проследяването дали дадено електронно писмо е било отворено.