Программа выдает результат в соответствии с условием, но валидацию не проходит.
Решение ужасное, я знаю что можно проще итд но как смог. Все пишут тут - не бойтесь делать так как получается и не бойтесь просить помощи =)
Логика работы примерно такая - создаем по условию список куда всё кладем введенное с клавиатуры;
Остальные два списка вычисляют длину короткого и длинного слов - путем сортировки и антисортировки списка - итого получаем два int с длинной самого короткого и самого длинного слова;
Далее в map ищем номер индекса самого длинного слова и самого короткого. Так как длины их известны - то всё просто, находим индексы, сравниваем и выдаем строчку по условию задачи.
Но решение не принимается.
Знаю что решение уродливо и сложно, но как я понимаю оно правильно дает решение.
Почему не принимается?
package com.javarush.task.task07.task0712;
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
/*
Самые-самые
*/
public class Solution {
public static void main(String[] args) throws IOException {
BufferedReader reader = new BufferedReader(new InputStreamReader(System.in));
ArrayList<String> arr = new ArrayList<>();
ArrayList<Integer> shortest = new ArrayList<>();
ArrayList<Integer> longest = new ArrayList<>();
Map<Integer, String> map = new HashMap<>();
int shortsymbol = 0;
int longsymbol = 0;
int indexmin = 0;
int indexmax = 0;
String wordmin = "";
String wordmax = "";
for (int i = 0; i < 10; i++) {
String s = reader.readLine();
arr.add(s);
map.put(i, s);
}
for (int i = 0; i < arr.size(); i++) {
shortest.add(arr.get(i).length());
}
Collections.sort(shortest);
shortsymbol = shortest.get(0);
for (int i = 0; i < arr.size(); i++) {
longest.add(arr.get(i).length());
}
Collections.sort(longest);
Collections.reverse(longest);
longsymbol = longest.get(0);
for (Map.Entry<Integer, String> s : map.entrySet()) {
Integer key = s.getKey();
Object value = s.getValue();
int length = s.getValue().length();
if (shortsymbol == length) {
indexmin = key;
wordmin = (String) value;
}
if (longsymbol == length) {
indexmax = key;
wordmax = (String) value;
}
}
if (indexmax < indexmin) {
System.out.print(wordmax);
}
else if (indexmin < indexmax) {
System.out.print(wordmin);
}
}
}