Ответы пользователя по тегу Алгоритмы
  • Как храняться данные в хеш-таблице?

    @sirs
    Советую Вам почитать эту статью, станет многое понятно.
    Если коротко - то в java НЕ выделятся память под какой-либо объект исходя из максимально возможного значения. Преимущество коллекций (если я верно понимаю Вас интересует HashMap) в том и заключается, что у них изменяемый размер.
    Ответ написан
    Комментировать
  • Как сделать индекс по заданному тексту, и как по этому индексу потом искать?

    @sirs
    Тогда для быстрого старта я предлагаю вам использовать HashMap. В качестве ключей используете ключевые слова из названия программ, например:

    Map<String, List<Software>> dictionary = new HashMap();
            List<Software> list = new ArrayList<Software>();
            programs.add(new Software("Программуля плюс"));
            programs.add(new Software("Программуля для детей"));
            programs.add(new Software("Автобусы. Программуля"));
            dictionary.put("Программуля", list);

    и т.д.
    Все ваши эталонные названия программ дробите на отдельные слова, объявляете каждое такое слово keywords. Тут нужно вводить ограничения на такие слова, например не менее 3 букв и только буквы и т.п. - тут вы должны сами определиться. Далее составляете списки программ, в которых встречаются такие ключевые слова, проверить если ли такая подстрока в строке - str1.toLowerCase().contains(str2.toLowerCase()).
    Поиск в полученном словаре просто по ключу dictionary.get("Программуля "); - вернет вам список программ, в которых встречается искомая подстрока. Тут тоже перед тем как опрашивать - можно слегка оптимизировать, например привести к одному регистру, убрать пробелы в начале и конце и т.д.
    Это самая простая реализация. Она не будет учитывать "похожие" слова, только совпадение подстроки в строке.
    Сделайте все на интерфейсах, в процессе по линкам выше наберетесь знаний и сделаете более крутую реализацию, оставив интерфейс старым, подменив только реализацию.
    Ответ написан
    4 комментария
  • Какие алгоритмические задачи могут быть на собеседовании по Java?

    @sirs
    Смотря о какой позиции java dev идет речь. Если идете в веб, то можете забыть об "инвертировать массив".
    Посмотрите лучше паттеры (шаблоны) проектирования:
    -Паттерны создания объектов (creational): Singleton, Builder, Abstract Factory и т.д.
    -Структурные паттерны (structural): Adapter, Composite, Facade и т.д.
    -Паттерны поведения (behavioral): Chain of Responsibility, Interpreter, Command, Mediator.
    ...
    Также часто спрашивают, что лежит в основе коллекций, например ArrayList, HashSet, различные Queue. Например чем отличается внутренняя структура TreeSet от HashSet, что происходит при добавление элемента в TseeSet и что происходит при добавление элемента в HashSet и т.д.
    Ответ написан
    4 комментария