С Новым годом! Форум программистов, компьютерный форум, киберфорум
Java для начинающих
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.81/21: Рейтинг темы: голосов - 21, средняя оценка - 4.81
0 / 0 / 3
Регистрация: 16.07.2012
Сообщений: 58
1

Найти количество предложений в которых есть повторяющиеся слова

10.07.2014, 00:57. Показов 4047. Ответов 15
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
здравствуйте. мне нужно выполнить задание: найти количество предложений в которых есть повторяющиеся слова.

код начал писать, но он не выполняется почему-то (19 строчка кода). не сравнивается подстрока со строкой...

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
package lab3;
 
public class first {
 
    public static void main(String[] args) {
 
        StringBuilder text = new StringBuilder(
                "Быстропе развитие услуг добровольного медицинского "
                        + "страхования услуг дало толчок для улучшения и совершенствования "
                        + "предоставляемых медицинских услуг. Начиная с 2008 года "
                        + "группа проект по созданию сети медицинских центров по всей "
                        + "территории России, под названием «Альфа-Центр Здоровья».");
        String sentences[] = text.toString().split("[.!?]");
 
        for (int i = 0; i <= sentences.length - 1; i++) {
            String worbs[] = sentences[i].toString().split(" ");
 
            for (int j = 0; j <= worbs.length - 1; j++) {
                if (worbs[j].equals(sentences[i])) {
                    System.out.println("1");
                }
                else{
                    System.out.println("2");
                }
            }
        }
    }
}
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.07.2014, 00:57
Ответы с готовыми решениями:

Найти наибольшее количество предложений текста, в которых есть одинаковые слова
Найти наибольшее количество предложений текста, в которых есть одинаковые слова. Тип текстовой...

Найти количество предложений в которых есть повторяющиеся слова
#include &quot;stdafx.h&quot; #include &lt;windows.h&gt; #include &lt;iostream&gt; #include &lt;conio.h&gt; using...

Найти количество предложений в которых есть повторяющиеся слова не используя string
Сотни раз пытался сделать, но всё безуспешно.

Найти количество предложений текста, в которых есть одинаковые слова
Доброго времени суток, помогите написать код по заданию Найти количество предложений текста, в...

15
944 / 687 / 230
Регистрация: 28.04.2013
Сообщений: 1,926
10.07.2014, 06:09 2
Java
1
if (worbs[j]/*слово*/.equals(sentences[i]/*предложение из которого взято слово*/)
Думаете это условие когда нибудь сработает?
1
0 / 0 / 0
Регистрация: 14.06.2016
Сообщений: 6
15.10.2019, 00:23 3
Пользуясь случаем передаю привет Ольге Рябычиной

PS: Код находит предложение с наибольшим кол-вом одинаковых слов. В конце отсортированная коллекция можете вывести что вам угодно.

Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
private int findMax(String str) {
        byte[] bytes = str.getBytes();
        byte tocka = '.';
        byte vopr = '?';
        byte voscl = '!';
   
        Map<String, Integer> sentences = new HashMap<String, Integer>(); 
        
        int max = bytes.length;
        if (max>0) {
            int i = 0;
            byte a;
            
            while(i<max){
                String sentence = "";
                
                while(i<max){
                    a = bytes[i];
                    i = i + 1;
 
                    if(i<max){
                        if(a == tocka || a == vopr || a == voscl){ //ПРЕДЛОЖЕНИЕ.
                            //проверяем следующий символ
                            a = bytes[i];
                            i = i + 1;
                            if(i<max){
                                if(a == tocka || a == vopr || a == voscl){ //возможно это троеточие, почемубы и нет? или ???
                                    while(i<max){
                                        a = bytes[i];
                                        if(a!=tocka && a!=vopr && a!=voscl){
                                            break;
                                        }
                                        i = i + 1;
                                    }
                                }
                            }
                            break;
                        }
                    }
                    
                    byte[] dwawdawkda = { a }; 
                    
                    sentence += new String(dwawdawkda);
 
                }                
                sentences.put(sentence, 0);
                
                String[] wordsInSentence = sentence.split(" ");
                
                
                for(int j = 0; j < wordsInSentence.length; j++) {
                    wordsInSentence[j] = wordsInSentence[j].replaceAll("[^a-zA-Z]", "");
                    System.out.println(wordsInSentence[j]);
                }
                
                HashMap<String, Integer> originallyWords = new HashMap<String, Integer>(); 
                for(int j = 0; j < wordsInSentence.length; j++) {
                    if (originallyWords.containsKey(wordsInSentence[j])) {
                        Integer figure = originallyWords.get(wordsInSentence[j]);
                        originallyWords.put(wordsInSentence[j], ++figure);
                    } else {
                        originallyWords.put(wordsInSentence[j], 1);
                    }
                }
                sentences.put(
                    sentence, 
                    originallyWords.entrySet().stream()
                        .sorted(Map.Entry.<String, Integer>comparingByValue()
                        .reversed()).iterator().next().getValue()
                );
                sentence = "";
            }
        }
        
        HashMap.Entry<String, Integer> entry = sentences.entrySet().stream()
                .sorted(Map.Entry.<String, Integer>comparingByValue().reversed()).iterator().next();
        
        String key = entry.getKey();
        Integer value = entry.getValue();
        
        System.out.println(sentences);
        
        System.out.println(key);
        System.out.println(String.valueOf(value));
    
        return value;
    }
0
Эксперт PythonЭксперт Java
19509 / 11049 / 2931
Регистрация: 21.10.2017
Сообщений: 23,302
15.10.2019, 07:22 4

Не по теме:

Хорошо, что я не посмотрел этот код на ночь...

0
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
15.10.2019, 11:07 5
М.б. так
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
import java.util.Arrays;
import java.util.Map;
import java.util.stream.Collectors;
import java.util.stream.Stream;
 
public class WordFrequencyCount {
    
    public static void main(String[] args) {
        
        int cnt = 0;
        String str = "Быстропе развитие услуг добровольного медицинского "
                   + "страхования услуг дало толчок для улучшения и совершенствования "
                   + "предоставляемых медицинских услуг. Начиная с 2008 года "
                   + "группа проект по созданию сети медицинских центров по всей "
                   + "территории России, под названием «Альфа-Центр Здоровья».";
        // делим строку на предложения
        String[] sentences = str.split("[.?!]");
        Map<String, Integer> freqWords;
        for (String sentence : sentences) {
            // разбиваем предложение на слова (case-insensitive) и считаем количество
            freqWords = Stream.of(sentence)    
                    .map(w -> w.split("\\s+"))
                    .flatMap(Arrays::stream)
                    .collect(Collectors.toMap(w -> w.toLowerCase(), w -> 1, Integer::sum)); 
            // если у какого-либо слова счетчик > 1 - это предложение подсчитывается в cnt
            if (freqWords.values().stream().anyMatch(i -> i > 1)) cnt++;
        }
        System.out.println("Количество предложений, в которых есть повторяющиеся слова: " + cnt);        
        
    }
    
}
0
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
15.10.2019, 11:12 6
Или так... без стримов
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import java.util.*;
 
public class WordFrequencyCount {
    public static void main(String[] args) {
 
        String text = "Быстрое развитие услуг добровольного медицинского "
                + "страхования услуг дало толчок для улучшения и совершенствования "
                + "предоставляемых медицинских услуг. Начиная с 2008 года "
                + "группа проект по созданию сети медицинских центров по всей "
                + "территории России, под названием «Альфа-Центр Здоровья».";
        String[] sentences = text.split("[.!?]\\s");
        int count = 0;
        for (int i = 0; i < sentences.length; i++) {
            String temp = sentences[i];
            sentences[i] = sentences[i].toLowerCase().replaceAll("[^а-яa-z'\\s\\-]", "");
            String[] words = sentences[i].split("\\s+");
            Set<String> set = new HashSet<>(Arrays.asList(words));
            if (set.size() < words.length) {
                System.out.println(temp);
                System.out.println("Одинаковых слов: " + (words.length - set.size() + 1));
                count++;
            }
        }
        System.out.println("Предложений, имеющих повторяющиеся слова: " + count);
    }
}
Код
Быстрое развитие услуг добровольного медицинского страхования услуг дало толчок для улучшения и совершенствования предоставляемых медицинских услуг
Одинаковых слов: 3
Начиная с 2008 года группа проект по созданию сети медицинских центров по всей территории России, под названием «Альфа-Центр Здоровья».
Одинаковых слов: 2
Предложений, имеющих повторяющиеся слова: 2
1
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
15.10.2019, 11:40 7
alicesmagic, с одинаковыми словами не понял.
words.length - всего слов в предложении;
set.size() - количество уникальных слов в предложении.
words.length - set.size() - количество дублей
А
Цитата Сообщение от alicesmagic Посмотреть сообщение
(words.length - set.size() + 1)
- стреляет только в случае, если дубли имеет только одно слово. Попробуй добавить в любое предложение пяток одинаковых слов.
А вот
Цитата Сообщение от alicesmagic Посмотреть сообщение
(set.size() < words.length)
для определения наличия дублей в предложении - это здорово, тут я не сообразил.
1
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
15.10.2019, 12:18 8
Цитата Сообщение от davson Посмотреть сообщение
стреляет только в случае, если дубли имеет только одно слово
Да, согласна. Промашка вышла. Спасибо, что подсказали. Ну, по условию задачи подсчитывать слова вообще не нужно. Так что можно просто убрать это свидетельство моей невнимательности)))

Добавлено через 3 минуты
Хотя, если заменить строку вывода с такой "Одинаковых слов:" на такую "Не уникальных слов:", то логически будет все правильно))
0
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
15.10.2019, 12:28 9
Цитата Сообщение от alicesmagic Посмотреть сообщение
Хотя, если заменить строку вывода с такой "Одинаковых слов:" на такую "Не уникальных слов:", то логически будет все правильно))
Тогда единичка все-равно лишняя
0
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
15.10.2019, 13:17 10
davson, да. Лучше эту строку вообще убрать. Однозначно))
0
501 / 347 / 134
Регистрация: 14.06.2016
Сообщений: 666
15.10.2019, 16:32 11
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
class WordFrequencyCount {
    public static void main(String[] args) {
 
        String text = "Быстрое развитие услуг добровольного медицинского "
                + "страхования услуг дало толчок для улучшения и совершенствования "
                + "предоставляемых медицинских услуг. Начиная с 2008 года "
                + "группа проект по созданию сети медицинских центров по всей "
                + "территории России, под названием «Альфа-Центр Здоровья».";
 
        System.out.println("Предложений, имеющих повторяющиеся слова: " +
                Pattern.compile("(?ui)[^.]*(\\b\\p{L}+\\b)[^.]*(\\b\\1\\b)[^.]*").matcher(text).results().count());
    }
}
1
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
15.10.2019, 17:21 12
vcrop, а что это за метод такой results()? У меня такого нет?
0
501 / 347 / 134
Регистрация: 14.06.2016
Сообщений: 666
15.10.2019, 17:43 13
https://docs.oracle.com/en/jav... l#results()
Может и нет. 11 java
0
66 / 43 / 24
Регистрация: 18.08.2019
Сообщений: 129
15.10.2019, 17:55 14
alicesmagic,
public Stream<MatchResult> results()
Returns:
a sequential stream of match results.
Since:
9
На работе к сожалению only 8.
0
501 / 347 / 134
Регистрация: 14.06.2016
Сообщений: 666
15.10.2019, 18:02 15
Напиши руками
Matcher matcher = Pattern.compile("(?ui)[^.]*(\\b\\p{L}+\\b)[^.]*(\\b\\1\\b)[^.]*").matcher(text);
int count = 0;
while (matcher.find()) count++;
и т.д.
0
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
15.10.2019, 18:25 16
Мне сказали, что пока для моего уровня еще не обязательно с 8-ки уходить. Есть мнения по этому поводу?
0
15.10.2019, 18:25
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
15.10.2019, 18:25
Помогаю со студенческими работами здесь

String, найти слова, в которых есть повторяющиеся символы
Дан текст не менее, чем из 7 слов, нужно найти слова в которых есть повторяющиеся символы и...

Напечатать слова из двух заданных предложений, которые есть только в одном из них (в том числе повторяющиеся)
Даны два предложения. Напечатать слова, которые есть только в одном! Из них (из них в том числе...

Подсчитать количество предложений, в каждом из которых по 3 слова
Дана строка символов. Подсчитать количество предложений в строке, в каждом из которых по 3 слова.

Подсчитать количество предложений в строке, в каждом из которых по 3 слова
Дана строка символов. Подсчитать количество предложений в строке, в каждом из которых по 3 слова.


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
16
Ответ Создать тему
Новые блоги и статьи
Как написать микросервис на C# с Kafka, MediatR, Redis и GitLab CI/CD
InfoMaster 15.01.2025
В современной разработке программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот подход позволяет разделить сложную систему. . .
Что такое CQRS и как это реализовать на C# с MediatR
InfoMaster 15.01.2025
Концепция CQRS и её роль в современной разработке В современном мире разработки программного обеспечения архитектурные паттерны играют ключевую роль в создании масштабируемых и поддерживаемых. . .
Как настроить CI/CD с Azure DevOps
InfoMaster 15.01.2025
CI/ CD, или непрерывная интеграция и непрерывное развертывание, представляет собой современный подход к разработке программного обеспечения, который позволяет автоматизировать и оптимизировать процесс. . .
Как настроить CI/CD с помощью Jenkins
InfoMaster 15.01.2025
Введение в CI/ CD и Jenkins В современной разработке программного обеспечения непрерывная интеграция (CI) и непрерывная доставка (CD) стали неотъемлемыми элементами процесса создания качественных. . .
Как написать микросервис на Go/Golang с Kafka, REST и GitHub CI/CD
InfoMaster 14.01.2025
Определение микросервиса, преимущества использования Go/ Golang Микросервис – это архитектурный подход к разработке программного обеспечения, при котором приложение состоит из небольших, независимо. . .
Как написать микросервис с нуля на C# с RabbitMQ, CQRS, Swagger и CI/CD
InfoMaster 14.01.2025
В современном мире разработки программного обеспечения микросервисная архитектура стала стандартом де-факто для создания масштабируемых и гибких приложений. Этот архитектурный подход предполагает. . .
Как создать интернет-магазин на PHP и JavaScript
InfoMaster 14.01.2025
В современном мире электронная коммерция стала неотъемлемой частью бизнеса. Создание собственного интернет-магазина открывает широкие возможности для предпринимателей, позволяя достичь большей. . .
Как написать Тетрис на Ассемблере
InfoMaster 14.01.2025
Тетрис – одна из самых узнаваемых и популярных компьютерных игр, созданная в 1984 году советским программистом Алексеем Пажитновым. За прошедшие десятилетия она завоевала симпатии миллионы людей по. . .
Как создать игру "Танчики" на Unity3d и C#
InfoMaster 14.01.2025
Разработка игр – это увлекательный процесс, сочетающий в себе творчество и технические навыки. В этой статье мы рассмотрим создание классической игры "Танчики" с использованием Unity3D и языка. . .
Организую платный онлайн микро-курс по доработке Android-клиента Telegram
_Ivana 14.01.2025
Официальная версия и распространенные форки не полностью устраивают? Сделай свою кастомную версию клиента! 4 занятия по 2 часа (2 недели пн, ср 19:00-21:00 по Москве). Первое вводное занятие. . .
Как создать приложение для фитнеса для iOS/iPhone на Kotlin
InfoMaster 14.01.2025
Создание собственного фитнес-приложения — это не только захватывающий, но и полезный процесс, ведь оно может стать вашим верным помощником на пути к здоровому и активному образу жизни. В современных. . .
Как создать приложение магазина для iOS/iPhone на Swift
InfoMaster 14.01.2025
Введение в разработку iOS-приложений Разработка приложений для iPhone и других устройств на базе iOS открывает огромные возможности для создания инновационных мобильных решений. В данной статье мы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2025, CyberForum.ru