Привет, ребята, я надеюсь, что ваша пятница была замечательной, и у вас была продуктивная рабочая неделя. Для сегодняшней проблемы с алгоритмом я собираюсь написать функцию, которая может возвращать истину, если все символы в строке уникальны, и ложь, если есть повторяющиеся символы. Вот пример:
Input:"123456^&*(-="; Output: True Input:"1124356789*&^%"; Output: False
Итак, я начал с небольшого исследования и обнаружил, что существует всего 128 возможных уникальных строковых символов, которые вы можете использовать. Вот краткая ссылка, которая поможет вам просмотреть:
Зная это, я написал свой первый логический оператор, в котором, если длина входных данных превышала 128, функция автоматически возвращала false. Как только я узнал, что ввод меньше 128 символов, я создал массив логических значений длиной 128 элементов. Затем я начал перебирать введенную строку. Если этот символ уже существовал, т. е. был истинным в массиве, он вернул бы ложь, в противном случае он был бы преобразован в истину в новом массиве. В конце, после того как цикл for перебирает все записи, функция вернет true, поскольку совпадений не было. вот как мое решение выглядит в коде:
function isUniqueChars(str) { if (str.length > 128) return false; char_bool = new Array(128); for(let i = 0; i < str.length; i++) { if (char_bool[str[i]]){ return false } char_bool[str[i]] = true; } return true; }
В любом случае, если вы, ребята, узнали что-то интересное или думаете, что решение довольно крутое, нажмите кнопку аплодисментов! Если у вас есть лучшие способы решить эту проблему, не стесняйтесь оставить ответ или связаться со мной, спасибо!