Метод, который проверяет наличие параметра в хэш-карте (ключ) - PullRequest
0 голосов
/ 13 января 2020

У меня есть два параметра, представляющих два чувствительных к регистру слова, которые могли быть найдены в документе. Мне нужен метод, который должен возвращать true, если первый параметр встречается в документе хотя бы один раз, а за вторым словом сразу же следует хотя бы один раз. В противном случае он должен вернуть false.

Вот мой код.

public boolean nextTo(String firstInput, String secondInput) {
Iterator it = Words.keySet().iterator();

    while (it.hasNext() == true)
    {
        it.next();

        if (Words.containsKey(firstInput))
        {
            if(Words.higherKey(secondInput))

            {
                return true;
            }

        }

    }
    return false;

1 Ответ

0 голосов
/ 13 января 2020

Решение 1:

Представьте документ как String[] и просто переберите слова в документе. Когда вы увидите firstInput, проверьте, что следующее слово - secondInput.

Решение 2:

Создайте обратный индекс для документа; т. е. Map<String, int[]>, где String ключи - это слова, а значения int[] содержат индексы для каждого вхождения слова в документе.

Заполните обратный индекс из документа.

Затем, чтобы найти, если firstInput сопровождается secondInput:

int[] fi = reverseIndex.get(firstInput);
int[] si = reverseIndex.get(secondInput);

if (fi == null || si == null) {
    return false;
}
for (int i = 0; i < fi.length; i++) {
    for (int j = 0; j < si.length; j++) {
        if (fi[i] == si[j] - 1) {
           return true;
        }
    }
}
return false.
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...