Форум программистов, компьютерный форум, киберфорум
Java SE (J2SE)
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 
Рейтинг 4.91/64: Рейтинг темы: голосов - 64, средняя оценка - 4.91
9 / 1 / 0
Регистрация: 01.07.2019
Сообщений: 26

Самое длинное слово

10.07.2019, 20:19. Показов 12523. Ответов 20

Студворк — интернет-сервис помощи студентам
Реализуйте функцию, возвращающую самое длинное слово из переданного массива. Если таких слов много - необходимо вернуть наименьшее в лексографическом порядке (то есть по алфавиту, как в телефонной книге).

Пример_1
Ввод:
i'm gonna make a change for once in my life it's gonna feel real good gonna make a difference
Вывод:
difference

Пример_2
Ввод:
Every night in my dreams i see you i feel you that is how i know you go on far across the distance and spaces between us you have come to show you go on
Вывод:
distance

Я попытался какую-то функцию придумать, но она не правильно работает.

Мой вариант:
Java
1
2
3
4
5
6
7
8
9
10
11
static String maxLengthWord(String [] s){
 int cnt = 0;
        for (int i = 0; i < s.length; i++) {
            if(s[i].length() == maxLength){
                cnt++;
            }
        }
 
        if(cnt > 1){
            return s[0];
        }
Подскажите, как лучше сделать так чтоб работало как требуется в задании?
0
cpp_developer
Эксперт
20123 / 5690 / 1417
Регистрация: 09.04.2010
Сообщений: 22,546
Блог
10.07.2019, 20:19
Ответы с готовыми решениями:

В заданной строке текста выведите самое короткое и самое длинное слово.
26 В заданной строке текста выведите самое короткое и самое длинное слово. 27 Вычислите выражение z(x) = (sign(x) + sign(y)) –...

Найти в строке самое длинное слово, вывести это слово и его длину
Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину. Если таких слов несколько, выведите...

Самое длинное слово
Добрый вечер! Помогите Пожалуйста написать программу, которая будет находить в символьном массиве, сколько символов содержит самое...

20
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
10.07.2019, 20:27
прочитай хотя бы сам то, что пишешь
0
9 / 1 / 0
Регистрация: 01.07.2019
Сообщений: 26
10.07.2019, 20:30  [ТС]
Это конечно отличный совет. Прям сразу все стало ясно. Помогли, так помогли.
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
10.07.2019, 20:36
Сан Александрыч,

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
import java.util.Arrays;
 
public class Start {
    public static void main(String[] args) {
        getLongestWord("i'm gonna make a change for once in my life it's gonna feel real good gonna make a difference");
        getLongestWord("Every night in my dreams i see you i feel you that is how i know you go on far across the distance and spaces between us you have come to show you go on");
    }   
    
    private static String getLongestWord(String phrase){
        String words[] = phrase.split(" ");
        Arrays.sort(words);
        
        int len = 0;
        String longest = "";
        
        for (String string : words) {
            if (string.length() > len) {
                len = string.length();
                longest = string;
            }
        }
        
        System.out.println("The longest word is: " + longest);
        
        return longest;
    }
}
1
9 / 1 / 0
Регистрация: 01.07.2019
Сообщений: 26
10.07.2019, 20:53  [ТС]
Все супер. Но надо чтобы был именно массив слов. То есть функция нужна подобного вида: static String maxLengthWord(String [] s)
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
10.07.2019, 22:04
Лучший ответ Сообщение было отмечено Сан Александрыч как решение

Решение

Тогда так:
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
import java.util.*;
 
public class Words {
    public static void main(String[] args) {
        String str1 = "i'm gonna make a change for once in my life it's gonna feel real good gonna make a difference";
        String str2 = "Every night in my dreams i see you i feel you that is how i know you go on far across the distance and spaces between us you have come to show you go on";
        String[] words1 = str1.split(" ");
        String[] words2 = str2.split(" ");
        System.out.println("The longest word is: " + maxLengthWord(words1));
        System.out.println("The longest word is: " + maxLengthWord(words2));
    }   
    
    private static String maxLengthWord(String[] s) {
        for (int i = 0; i < s.length; i++) {
            s[i] = s[i].toLowerCase();
        }
        Arrays.sort(s);
        int len = 0;
        String longest = "";
        for (String string : s) {
            if (string.length() > len) {
                len = string.length();
                longest = string;
            }
        }
        return longest;
    }
}
Я немного дополнила метод Kukstyler'а. Необходимо поменять заглавные буквы на строчные. Иначе, если, дополнить первую строку десятибуквенным словом, например, "Incomplete", то в результате будет выведено это слово, а не "difference". Хотя "difference" является в данной паре наименьшим в лексографическом порядке.
1
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
10.07.2019, 23:50
Kukstyler, alicesmagic3d, а какой смысл в сортировке
Java
1
Arrays.sort(words);
?
0
 Аватар для Kukstyler
1260 / 870 / 268
Регистрация: 02.04.2009
Сообщений: 3,307
11.07.2019, 00:01
Лучший ответ Сообщение было отмечено Сан Александрыч как решение

Решение

Цитата Сообщение от rvs_dk Посмотреть сообщение
а какой смысл в сортировке

Цитата Сообщение от Сан Александрыч Посмотреть сообщение
необходимо вернуть наименьшее в лексографическом порядке

Цитата Сообщение от Сан Александрыч Посмотреть сообщение
Но надо чтобы был именно массив слов.
Ну так что стоит перенести сплит в мэйн и изменить тип параметра метода на массив? Пошевелитесь немного сами, Вам дали готовый вариант. Вы же, всё так и, хотите чему-то научиться, я надеюсь?
2
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
11.07.2019, 00:01
rvs_dk, По идее самое длинное и саоме короткое слова после сортировки будут на разных концах массива(но это я так думаю), и потом достаточно взять последнее слово с массива. Но вот зачем потом снова искать слова по длинне, и что делать если будет несколько таких слова (а там по условию выбрать надо "наименьшее в лексографическом порядке", то есть не последнее), с кода я пока не понял.
0
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
11.07.2019, 00:05
А все догадуюсь. Это чтобы вернуть наименьшее в лексографическом порядке?

Добавлено через 2 минуты

Не по теме:

Страницу не обновлял, даже не видел, что тут уже ответили

0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
11.07.2019, 00:48
самое длинное и самое короткое слова после сортировки будут на разных концах массива
Это неверное предположение. Достаточно после сортировки вставить строку: System.out.println(Arrays.toString(s));, что бы это увидеть.

Добавлено через 4 минуты
Сортировка как раз и выстраивает все слова в лексикографическом порядке. Потом лишь остается найти первое из самых длинных слов.
Но, при этом, слова с заглавной буквы будут отсортированы в самом начале, что нарушает лексикографический порядок.
1
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
11.07.2019, 00:51
alicesmagic3d, а у Вас чувствуется талант. Далеко пойдете! Желаю успехов!
1
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
11.07.2019, 00:56
rvs_dk, спасибо! Мне не часто приходится слышать похвалу
1
129 / 108 / 24
Регистрация: 11.07.2017
Сообщений: 274
11.07.2019, 01:03
Это заслуженно! Я чувствую себя по сравнению с Вами немного туповатым . Java мне не очень задалась.
1
528 / 263 / 70
Регистрация: 11.12.2016
Сообщений: 1,223
11.07.2019, 01:16
Цитата Сообщение от alicesmagic3d Посмотреть сообщение
Это неверное предположение.
Да согласен, я ошибался (давно строки не сортировал).
Для реабилитации даю свой вариант с проверкой str0.
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
public class CompStrArray{
 
    public static void main(String[] args){
        String str0 = "i'm gonna make a change for once in my life it's gonna feel real good gonna make a difference differenca differencw sometext";
        String str1 = "i'm gonna make a change for once in my life it's gonna feel real good gonna make a difference ";
        String str2 = " Every night in my dreams i see you i feel you that is how i know you go on far across the distance and spaces between us you have come to show you go on";
        System.out.println("str0 = "+getStr(str0.split(" ")));
        System.out.println("str1 = "+getStr(str1.split(" ")));
        System.out.println("str2 = "+getStr(str2.split(" ")));
    }
    public static String getStr(String[] str) {
        Arrays.sort(str,((Comparator<String>)(a,b) -> a.length()-b.length()).thenComparing((a,b) -> b.compareToIgnoreCase(a)));
        return str[str.length-1];
    }
}
Code
1
2
3
str0 = differenca
str1 = difference
str2 = distance
1
 Аватар для Aviz__
2745 / 2054 / 507
Регистрация: 17.02.2014
Сообщений: 9,473
11.07.2019, 08:49
Цитата Сообщение от Сан Александрыч Посмотреть сообщение
самое длинное слово из переданного массива. Если таких слов много - необходимо вернуть наименьшее в лексографическом порядке
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
public class Helper {
 
    public static void main(String[] args) {
        String ss = "qwe qwe weq qew ww www";
        System.out.println(getMaxLengthWordAndAbcOrder(ss));
    }
 
    private static String getMaxLengthWordAndAbcOrder(String txt) {
        String last = "";
        String curr = "";
        for (String texWord : txt.split("\\s")){
            if(curr.length() <= texWord.length() && !curr.equals(texWord)){
                last = curr;
                curr = texWord;
            }
        }
        return curr.compareToIgnoreCase(last) <= 0 ? curr : last;
    }
}
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.07.2019, 09:46
Цитата Сообщение от ViktorFX Посмотреть сообщение
Arrays.sort(str,((Comparator<String>)(a, b) -> a.length()-b.length()).thenComparing((a,b) -> b.compareToIgnoreCase(a)));
Java
1
2
3
Arrays.stream(str0.split("\\s+"))
.max(comparingInt(String::length).thenComparing(Comparator.<String>naturalOrder().reversed()))
.ifPresent(System.out::println);
2
9 / 1 / 0
Регистрация: 01.07.2019
Сообщений: 26
11.07.2019, 19:34  [ТС]
Согласен, ничего сложного в том чтоб поменять тип параметра на массив нет...затупил просто. Спасибо!
0
Эксперт Java
3639 / 2971 / 918
Регистрация: 05.07.2013
Сообщений: 14,220
11.07.2019, 19:57
заканчивай затуплять - я тебе это с самого начала говорил
0
 Аватар для alicesmagic
233 / 130 / 27
Регистрация: 24.08.2016
Сообщений: 875
11.07.2019, 20:15
Сан Александрыч, спасибо за доверие. Но, на мой взгляд, "лучший ответ" в данной теме это код от Aviz__. Он короче и гораздо изящнее.
ИМХО... код ViktorFX и xoraxax тоже, наверное, классный, но я пока не могу оценить его по достоинству. Не хватает знаний.
1
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
raxper
Эксперт
30234 / 6612 / 1498
Регистрация: 28.12.2010
Сообщений: 21,154
Блог
11.07.2019, 20:15
Помогаю со студенческими работами здесь

Самое длинное слово (доделать программу)
В общем ситуация такая .... Программа находит длину самого длинного слова в предложении. Как сделать так, чтобы выводилось и само...

ArrayList Не правильно выводит самое длинное слово
public class Test{ private static List&lt;String&gt; strings = new ArrayList&lt;&gt;(); // 1. create collection public static void...

Дана строка, найти самое длинное слово
Дана строка, содержащая пробелы. Найдите в ней самое длинное слово, выведите это слово и его длину. Если таких слов несколько, выведите...

Дана строка символов. Вывести на экран самое длинное слово
Дана строка символов. Вывести на экран самое длинное слово. Помогите пожалуйста с программой!

Самое длинное слово палиндром.Ошибка.Выводит все слова
Здравствуйте,подскажите пожалуйста, как вывести самое длинное слово палиндром?Помогите с последним циклом в программе,он выводит все...


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

Или воспользуйтесь поиском по форуму:
20
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru