Почему это заняло 54 мс, хотя временная сложность была O (n) [закрыто]C++

Программы на C++. Форум разработчиков
Anonymous
Почему это заняло 54 мс, хотя временная сложность была O (n) [закрыто]

Сообщение Anonymous »

Недавно я начал решать вопросы по лит-коду и наткнулся на вопросы, в которых нам нужно было удалить все буквенно-цифровые символы из строки, а затем проверить, является ли строка палиндромом или нет.
Я пытался сохранить O(n) временная сложность все равно заняла 54 мс, что слишком долго, может кто-нибудь объяснить. Вот код:

Код: Выделить всё

class Solution {
public:
bool isPalindrome(string s) {
int n = 0;
transform(s.begin(),s.end(),s.begin(),::tolower);
while(s[n] != '\0'){
if(isalnum(s[n]) == 0 ){
s.erase(s.begin()+n);
}
else{
n++;
}
}

string check = s;
reverse(s.begin(),s.end());

if(s == check){
return true;
}
else{
return false;
}

}
};
Мне хотелось знать, какая именно часть кода занимает много времени

Подробнее здесь: https://stackoverflow.com/questions/786 ... ity-was-on

Вернуться в «C++»