Разница между добавлением символа в строку против строки в символ - PullRequest
1 голос
/ 02 мая 2020

Какая разница в производительности между:

string s="";
//stk is std::stack<char>
 while(!stk.empty()){
            s+=stk.top();
            stk.pop();
        }            
        reverse(s.begin(),s.end());

и

 while(!stk.empty()){
            s=stk.top()+s;
            stk.pop();
        }            

Почему вышеописанное является более эффективным? При необходимости могу привести пример.

Проблема LeetCode

1 Ответ

2 голосов
/ 02 мая 2020

s+=stk.top(), что в данном случае эквивалентно s.push_back(stk.top()), амортизирует сложность с постоянным временем. s=stk.top()+s, по существу эквивалентно s.insert(s.begin(), 1, stk.top()), который является линейным по длине s.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...