Я не уверен, правильно ли я делаю анализ big-O.
Это функция, которая заменяет все гласные в строке указанным символом.
Я решил сравнить каждый символ в строке со строкой постоянного размера, которая содержит все гласные.
Учитывая, что входная строка может масштабироваться вверх по размеру, но строка гласных является постоянной по размеру, я думаю, что анализ больших чисел O (n * m), а не O (n * n), где n - это входная строка, а m - гласная строка.
Я думаю, что это должно быть просто O (n), а не даже O (n * m), учитывая, что второй цикл for выполняет итерации по постоянному числу элементов, так что это будет отброшено?
Буду очень признателен, если кто-нибудь сможет меня поправить.
using namespace std;
string replaceVowels(string str, char ch) {
string vowels = "aeiouyAEIOUY";
for(int i = 0; i < str.size(); i++) { //O(n)
for(int j = 0; j < vowels.size(); j++) { //O(m)
if (str[i] == vowels[j])
str[i] = ch;
}
}
// O(n * m) or O(n) or O(n * n)?
return str;
}