Я практикую проблемы с алгоритмом и пытаюсь удалить данные буквы из строки в o (n) времени.удаление символов из строки - алгоритм javascript
Моя попытка ниже неправильно в несколько способов:
- последний индекс в массиве outputString «не определен», и я не знаю, почему.
- Мой вывод - это правильная буква, но она возвращается для длины исходной строки.
Как это исправить и почему возникают эти ошибки?
function removeChars(lettersToDelete, string) {
var flags = {}; // a hash of letters to delete.
var outputString = string.split("");
var lettersToDelete = lettersToDelete.split("");
var i, j;
for (i = 0; i < lettersToDelete.length; i++) {
flags[lettersToDelete[i]] = true;
}
console.log(flags);
for (var j = 0; j < string.length; j++) {
if (flags[string[j]]) {
outputString[j++] = string[j];
}
}
console.log(outputString); //[ 'a', 'a', 'a', 'a', undefined ]
return outputString.join(""); // 'aaaa'
}
_If вы want_, вы можете использовать регулярные выражения. 'var regex = новый RegExp (" ["+ lettersToDelete +"] ", 'g'); var outputString = string.replace (regex, ''); ' – Tushar
приятно слушать, кто-то пытается учиться 1+ –
То, как вы манипулируете' j', не выглядит правильным. Также ваша переменная 'outputString' инициализируется как массив, содержащий все буквы исходного ввода, и вы никогда ничего не удаляете из этого массива. Наконец, условие оператора if внутри цикла проверяет, следует ли удалять текущую букву, но не следует ли проверять, следует ли * сохранить * текущую букву? – nnnnnn