...
}
int longest = strings.get(0).length(); // int longest = 0;
int shortest = strings.get(0).length(); // int shortest = 0;
for (...) {
if (longest < strings.get(i).length()) { //strings.get(0).length()< strings.get(i).length())
longest = strings.get(i).length();
}
}
for (...) {
if (shortest > strings.get(i).length()) { //strings.get(0).length()> strings.get(i).length())
shortest = strings.get(i).length();
}
}
...
Anthony Edward Stark
29 уровень
В чем разница?
Решен
Комментарии (4)
- популярные
- новые
- старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Артем Divertitto Senior Android-разработчи в United Tech Master
17 мая 2019, 08:41
В первом цикле если longest короче strings.get(i).length(), то следовательно longest = strings.get(i).length()
А во втором, если shortest длинее strings.get(i).length(), то следовательно shortest становится strings.get(i).length()
0
Anthony Edward Stark
17 мая 2019, 09:19
Некорректно задал вопрос! Если заменить строки кода, соответствующими строчками комментария, задача валидацию не проходит ))) так вот я не пойму в чем разница!
0
hidden #598481
17 мая 2019, 09:31решение
не пройдет, т.к. ты каждую строчку будешь сравнивать по длине с первой, а не с самой длинной.
то есть допустим длина строк 1, 3, 2.
1) 3 > 1, значит запишешь 3 в значение самой длинной. Следующий шаг:
2) 2 > 1 тоже, значит ты запишешь 2 в значение самой длинной вместо 3. И т.д. Получается, что алгоритм не гарантирует, что отдаст обязательно самую длинную строку, значит он неправильный.
С самыми короткими то же самое.
Что касается инициализации, то longest = 0 нормально, т.к. не может быть строки, короче чем 0 символов. Получается, любая будет длиннее или такая же, поэтому longest можно объявить = 0.
А shortest если объявить = 0, то как ты будешь сравнивать? Короче, чем 0, ты строку не введешь, значит он так и останется нулем. И какое бы значение ты не присвоил изначально, есть шанс, что все вводимые строки будут длиннее, чем значение, которое ты указываешь "от балды". Поэтому нужно инициализировать тем значением, которое точно есть среди длин вводимых строк. Поэтому ты используешь int shortest = strings.get(0).length()
+3
Anthony Edward Stark
17 мая 2019, 10:12
благодарю, как то так оно и представлялось, но не мог себе объяснить )))
0