Страницы

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

среда, 1 января 2020 г.

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

#java #инспекция_кода


Надо сделать заглавными последние буквы каждого слова.
   Но 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"    

    


Ответы

Ответ 1



Например, так: 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(с);

Ответ 2



Как-то так: private static String lastToUpperCase(String text) { String res = ""; for (String s : text.split("\\b")) if (s.length() == 1) res += s.toUpperCase(); else res += s.substring(0, s.length() - 1) + s.substring(s.length() - 1).toUpperCase(); return res; } Input: I want to walk my dog. Печатает: I wanT tO walK mY doG.

Ответ 3



используя import org.apache.commons.lang3.StringUtils; import org.apache.commons.lang3.text.WordUtils; получается: String inputString = "this string is needed to be last letter-uppercased for each word"; String outputString = StringUtils.reverse(WordUtils.capitalize(StringUtils.reverse(inputString))); // System.out.println(outputString): // thiS strinG iS needeD tO bE lasT letter-uppercaseD foR eacH worD подглядел: https://stackoverflow.com/a/42302143/6104996

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

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