Привет, ребята, я надеюсь, что ваша пятница была замечательной, и у вас была продуктивная рабочая неделя. Для сегодняшней проблемы с алгоритмом я собираюсь написать функцию, которая может возвращать истину, если все символы в строке уникальны, и ложь, если есть повторяющиеся символы. Вот пример:

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;
}

В любом случае, если вы, ребята, узнали что-то интересное или думаете, что решение довольно крутое, нажмите кнопку аплодисментов! Если у вас есть лучшие способы решить эту проблему, не стесняйтесь оставить ответ или связаться со мной, спасибо!