Страницы

Поиск по вопросам

понедельник, 8 апреля 2019 г.

Сделать заглавными последние буквы каждого слова

Надо сделать заглавными последние буквы каждого слова. Но CodeHunt не считает мой код самым коротким. Как сделать еще короче?
public class Program {
public static String Puzzle(String s) { char[] chars = s.toCharArray(); for (int i = 0; i < chars.length; i++) { if (i==chars.length-1 || chars[i+1]==' ') chars[i]=Character.toUpperCase(chars[i]); }
return new String(chars); } }
Входные данные Выходные данные
"i " "I "
"aaaaaa" "aaaaaA"
" bbhbh" " bbhbH"


Ответ

Например, так:
char[] с = (s + " ").toCharArray(); for (int i = 1; i < с.length; i++) if (с[i]==' ') с[i-1]=Character.toUpperCase(с[i-1]); return new String(с);
Update
В условии выше не учитываются знаки препинания как разделители слов, то есть фраза "Вася,Петя,Сережа" будет одним словом, так как такие тестовые задания часто принимают пробел как единственные разделитель. Но если нужно учитывать знаки препинания, то используйте этот код (он будет считать разделителями все кроме букв и цифр):
char[] с = (s + " ").toCharArray(); for (int i = 1; i < с.length; i++) if ( !Character.isLetterOrDigit(c) ) с[i-1]=Character.toUpperCase(с[i-1]); return new String(с);

Комментариев нет:

Отправить комментарий