Поиск слов в длинной строке на расстоянии редактирования без учета пробелов

127.0.0.1 обычно является IP-адресом, назначенным для интерфейса «loopback» или «local-only». Это «поддельный» сетевой адаптер, который может обмениваться данными только с одним и тем же хостом. Он часто используется, когда вы хотите, чтобы приложение, поддерживающее сеть, обслуживало клиентов только на одном хосте. Процесс, который прослушивает 127.0.0.1 для соединений, будет получать только локальные соединения в этом сокете.

«localhost» обычно является именем хоста для 127.0.0.1 IP-адреса. Обычно он устанавливается в /etc/hosts (или эквивалент Windows с именем «hosts» где-то под %WINDIR%). Вы можете использовать его так же, как и любое другое имя хоста - попробуйте «ping localhost», чтобы увидеть, как он разрешает 127.0.0.1.

0.0.0.0 имеет пару различных значений, но в этом контексте, когда сервер предлагается прослушать 0.0.0.0, что означает «слушать все доступные сетевые интерфейсы». Адаптер loopback с IP-адресом 127.0.0.1 с точки зрения серверного процесса выглядит так же, как и любой другой сетевой адаптер на компьютере, поэтому сервер, которому нужно слушать 0.0.0.0, также будет принимать соединения на этом интерфейсе.

Это, надеюсь, ответит на IP-вопрос вашего вопроса. Я не знаком с Jekyll или Vagrant, но я предполагаю, что перенаправление вашего порта 8080 => 4000 каким-то образом связано с определенным сетевым адаптером, поэтому оно не находится на пути, когда вы локально подключаетесь к 127.0.0.1

0
задан Gurwinder Singh 21 February 2019 в 04:13
поделиться

1 ответ

public static void main(String[] args) {
    System.out.println(getMatches(List.of("OHIO", "WELL"), "HELLO HI THERE H E L L O WORLD WE LC OME", 1));
}

private static List<String> getMatches(List<String> words, String query, int editDistance) {
    return words.stream()
            .flatMap(w -> getMatches(w, query, editDistance).stream().map(String::trim))
            .distinct()
            .collect(Collectors.toList());
}

private static List<String> getMatches(String word, String query, int editDistance) {
    List<String> matches = new ArrayList<>();
    for (int i = 0; i < query.length(); i++) {
        StringBuilder candidate = new StringBuilder();
        StringBuilder candidateWithoutSpaces = new StringBuilder();
        populateCandidates(word, query, i, candidate, candidateWithoutSpaces);
        if (isMatch(candidateWithoutSpaces, word, editDistance)) matches.add(candidate.toString());
    }
    return matches;
}

private static boolean isMatch(StringBuilder candidateWithoutSpaces, String word, int editDistance) {
    if (candidateWithoutSpaces.length() != word.length()) return false;
    for (int i = 0; i < candidateWithoutSpaces.length(); i++) {
        if (candidateWithoutSpaces.charAt(i) != word.charAt(i) && --editDistance < 0) return false;
    }
    return true;
}

private static void populateCandidates(String word, String query, int i, StringBuilder candidate, StringBuilder candidateWithoutSpaces) {
    int j = 0;
    while (candidateWithoutSpaces.length() < word.length() && i + j < query.length()) {
        char c = query.charAt(i + j);
        candidate.append(c);
        if (c != ' ') candidateWithoutSpaces.append(c);
        j++;
    }
}

Выход

[O HI T, HELL, H E L L, WE LC]
0
ответ дан Kartik 21 February 2019 в 04:13
поделиться
Другие вопросы по тегам:

Похожие вопросы: