Омовение Рамы

  • 10
  • Недоступна
Когда-то жил и правил легендарный древнеиндийский царь Рама. И, вероятно, была та, которая его родила. Не факт, что она мыла его самостоятельно (царица всё-таки), но да простят нам знатоки эту невинную историческую фантазию. Напишем программу, которая заменит текст «мама мыла раму» на «Мама Мыла Раму».
Вы не можете решать эту задачу, т.к. не залогинены.
Комментарии (655)
  • популярные
  • новые
  • старые
Для того, чтобы оставить комментарий Вы должны авторизоваться
Ольга Пронина
Уровень 9, Москва
1 октября, 11:23
Ошибка: "Учитывай, что слова могут разделять больше, чем 1 пробел"... В смысле "Учитывай"!!! А в условии это написать было никак???? Да и, собственно, почему это слова должны разделять больше, чем 1 пробел???
gypsy potassium
Уровень 10, Урюпинск
19 августа, 12:36
У меня была такая ошибка: Я прописываю отдельно, чтобы первый символ строки менялся на большой, а потом в цикле делал проверку на наличие пробелов начиная со ВТОРОГО символа. При этом, если первый символ был бы пробелом, то следующий после него оставался бы неизменным.
Alex Sokoloww
Уровень 19, нижний новгород, Россия
2 сентября, 12:57
тоже плюнул и вынес проверку первого символа в отдельное условие.
Vlad
Уровень 9
30 июля, 12:25
Очередная задача с правильным выводом, но которую валидатор не пропускает.
Simpson
Уровень 10, Белгород, Россия
28 июля, 19:10
Засада. Целый день на нее убил. В общем строку переводим в символьный массив char с помощью метода toCharArray(), а условие выставляем с помощью счетчика count. то есть в начале цикла ставим счетчик в единицу, count++. Если индекс [i] в массиве равен ' ' то есть пробелу, сбрасываем счетчик в ноль. если не равен пробелу то есть count == 1 тогда переводим символ в верхний регистр с помощью toUpperCase() и присваиваем его индексу[ i] в массиве.
Максим Белоусов
Уровень 15, Москва, Россия
1 июля, 18:43
Целый день с этой задачей. Как всегда в хард задачах вся сложность скрыта в непростой логике. А именно чар в верхний регистр нужно переводить если (i==0 || char[i-1] == ' '). В этом вся сложность задачи.
Alex Sokoloww
Уровень 19, нижний новгород, Россия
2 сентября, 13:01
угу. но надо учитывать что у первого элемента нет предыдущего и стартуешь со второго элемента.
Андрей
Уровень 8, Сыктывкар, Россия
29 июня, 01:54
String[] allSplit = string.split(" "); for (int i = 0; i < allSplit.length; i ++) System.out.printf(allSplit[i].substring(0, 1).toUpperCase() + allSplit[i].substring(1) + " "); Что не так? Почему не проходит проверку?
Alex Sokoloww
Уровень 19, нижний новгород, Россия
2 сентября, 13:02
потому что. у тебя не учитываются множественные пробелы (два, три и тд.).
Alexx Dorofeev
Уровень 10, Санкт-Петербург
23 июня, 21:48
1) Создал список, в цикле добавил в него каждое слово из строки; 2) Добавляя строки в список вызывал дописанный метод(нагуглил про substring и toUpperCase), который возвращает слово с первой буквой в верхнем регистре, разбивая строку с помощью split. Все в одном цикле; 3) Обнулил строку и в цикле со счетчиком заполнил ее из списка; 4) Сходу профит, валидатор даже не ругнулся на пробел в начале строки; На удивление - задача пятиминутка, мб кто подскажет способ проще ?
Андрей Смирнов
Уровень 11, Москва, Россия
13 июля, 19:58
А у меня в решении со сплитом выдал ошибку "между словами может быть больше одного пробела". Переделал на посимвольную обработку...
Станислав Корнеев
Уровень 20, Воронеж , Россия
28 апреля, 16:34
все гениальное просто - лекция
Денис Кочетов Technical Lead в СП62
20 мая, 13:12
Спасибо. Помогло.
Максим Белоусов
Уровень 15, Москва, Россия
1 июля, 18:11
Низкий тебе поклон, 2 дня все методы стринг просматривал.
Александр Горохов
Уровень 15, Дятьково, Россия
15 сентября, 12:27
Просто то оно, конечно, просто, и решение буквально написано в статье. Осталось только разобраться, как это, блин, работает))))_)
Evgeny Pashko
Уровень 18, Минск, Беларусь
16 апреля, 21:06
В помощь добрым людям. Вводим строку. Разбиваем её сплитом (пробел) и делаем и неё массив строк. А дальше пользуемся методом сабстринг. array[i] = array[i].substring(0, 1).toUpperCase() + array[i].substring(1);
Рустам
Уровень 19, Екатеринбург, Россия
30 апреля, 08:02
А если слова будут разделены не пробелом, а запятой? А если не только запятой, но и двумя пробелами?
Денис Кочетов Technical Lead в СП62
20 мая, 13:03
Ну ты написал вопрос, а где ответ правильный в итоге?
макс лапушкин
Уровень 16, Куровское, Россия
11 августа, 09:47
а как ты обошел ошибку если вводится несколько пробелов
Dim
Уровень 16, Житомир, Украина
2 апреля, 10:51
Убил часа 3. Решал и циклами и алфавитными массивами char и знаковыми и там все это сравнивал, но ничего не выходило. А решил так благодаря лекции мой вывод
мама,мыла,раму
Мама,Мыла,Раму
валидатор засчитал верно. потом посмотрел решение от джавараш. у них вывод такой
мама,мыла,раму
Мама,мыла,раму
Но слов то у нас 3, разделенные запятыми!!! А заменяется лишь в одном первом слове. Хотя в задании сказано
первые буквы всех слов на заглавные
так что решение явно неверное у задачника. а мое заменяет все как надо 😅 ЗЫ кто прав, кто виноват?
Dim
Уровень 16, Житомир, Украина
2 апреля, 11:00
так же проверил на такой строке
Я, Дима,сегодня иду туда-это далеко
вывод моего кода
Я, Дима,Сегодня Иду Туда-Это Далеко
А решением джаваРаша такой
Я, Дима,сегодня иду туда-это далеко
Я, Дима,сегодня Иду Туда-это Далеко
То есть не учитываются слова, который стоят сразу с какими-то знаками
Nick
Уровень 20
12 апреля, 05:46
ещё в школе учат, ставить пробел между словами