Считаем слово

  • 10
  • Недоступна
Считать с консоли имя файла. Файл содержит слова, разделенные знаками препинания. Вывести в консоль количество слов "world", которые встречаются в файле. Закрыть потоки.
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (275)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий вы должны авторизоваться
Artem Kulikov19 уровень
вчера, 09:47
Привет! Подскажите, пожалуйста, а если в файле встречается вот так worldworld, то это же должно засчитываться за 2 слова?
Андрей Вайно22 уровень
8 октября, 16:57
мм, как вариант в данном случае сплит с учётом \\W и на equals проверка
Михаил20 уровень, Москва
7 октября, 15:12
Attention сразу для тех, кто зайдет в комменты перед решением,знаки препинания в этой задаче это все что в ASCII не подходит под англоязычные буквы,поэтому фильтр на проходящие символы соответствующий ставьте(естественно это не для тех,кто решает через регулярки).
vadtel23 уровень, Минск
3 октября, 14:55
Вогнать все в строку и replaceAll "\\bworld\\b" на "". Отнять длину первоначальной строки от строки после реплейса. Поделить результат на 5. Бинго
Katruk Dima20 уровень
8 октября, 15:18
На моём файле это работает но компилятор такого не принимает.
Андрей Вайно22 уровень
8 октября, 16:59
креативненько, как варик сразу закинуть файл в лист стрингов и LIST.removeIf(x -> !x.matches(\\bworld\\b)); правильный ответ - размер листа. )
LuneFox20 уровень, Москва
2 октября, 12:54
Надеюсь, в задачах никогда не будет "найдите текст регулярного выражения в тексте". Я устану писать регулярное выражение для поиска регулярного выражения... :D
Дмитрий20 уровень, Новосибирск
18 сентября, 10:15
Почему не проходит?
public class Solution {
    public static void main(String[] args) throws IOException {
        BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
        FileReader fileReader = new FileReader(reader.readLine());
        StringBuilder s = new StringBuilder();
        while (fileReader.ready()) {
            s.append((char) fileReader.read());
        }
        List<String> list = new ArrayList<>(Arrays.asList(s.toString().split(" ")));
        AtomicInteger worldCount = new AtomicInteger();
        list.forEach(element -> { if (element.equalsIgnoreCase("world")) worldCount.getAndIncrement(); });
        System.out.println(worldCount);
        reader.close();
        fileReader.close();
    }
}
Ольга19 уровень
15 сентября, 13:25
"\\bworld\\b" такая должна быть регулярка, чтоб он искал только слово world, а не вместе с такими вариантами worldlife, peopleworld
Galikhan Aysin22 уровень, Костанай
18 сентября, 13:46
спасибо, помогло)
Александр22 уровень
29 августа, 12:04
Почему эту регулярку принимает валидатор:
"world[ ,.!?]"
Типо "azazazaworld," это тоже совпадение с "world"?
Алексей20 уровень
2 сентября, 07:31
я задал этот вопрос прям совсем в хэлп, жду ответа. Вам спасибо за решение. т.е magicworld валидатор пропустит, а на worldwide будет ругаться. Тут или знаешь эту особенность валидатора, или нет. Она не очевидна из текста задания.
Максим28 уровень, Черкассы
19 августа, 07:16
Интересно, если файл будет 10Гб... Тогда варианты с впихиванием всего файла в строку не годятся.. Надо искать частями или до первого знака препинания.
Максим28 уровень, Черкассы
19 августа, 07:05
Почему интересно не принимало следующее: split("\\s*[\\p{Punct\\n}]\\s*") - дополнительно на пробелы проверил на всякий случай.