2129.Capitalize The Title

题目

给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母 大写

  • 如果单词的长度为 1 或者 2 ,所有字母变成小写。

  • 否则,将单词首字母大写,剩余字母变成小写。

请你返回 大写后title

 

示例 1:

输入:title = "capiTalIze tHe titLe"
输出:"Capitalize The Title"
解释:
由于所有单词的长度都至少为 3 ,将每个单词首字母大写,剩余字母变为小写。

示例 2:

输入:title = "First leTTeR of EACH Word"
输出:"First Letter of Each Word"
解释:
单词 "of" 长度为 2 ,所以它保持完全小写。
其他单词长度都至少为 3 ,所以其他单词首字母大写,剩余字母小写。

示例 3:

输入:title = "i lOve leetcode"
输出:"i Love Leetcode"
解释:
单词 "i" 长度为 1 ,所以它保留小写。
其他单词长度都至少为 3 ,所以其他单词首字母大写,剩余字母小写。

 

提示:

  • 1 <= title.length <= 100

  • title 由单个空格隔开的单词组成,且不含有任何前导或后缀空格。

  • 每个单词由大写和小写英文字母组成,且都是 非空 的。

思路

将字符串用空格分割,形成字符串数组后,判断字符串长度,长度大于2的首字母大写

代码

class Solution {
    public String capitalizeTitle(String title) {
        String[] strings = title.split(" ");
        String result = "";
        String temp = null;
        for (String s : strings) {
            if(s.length()>2){
                char[] chars = s.toCharArray();
                for (int i = 0; i < chars.length; i++) {
                    if(i==0){
                        chars[i]=Character.toUpperCase(chars[i]);
                    }else {
                        chars[i]=Character.toLowerCase(chars[i]);
                    }
                }
                temp=new String(chars);
            }else {
                temp=s.toLowerCase();
            }
            result=result+" "+temp;
        }
        return result.replaceFirst(" ","");
    }
} 

复杂度分析

使用了双重循环,时间复杂度为O(n^2)

官方解法

直接把整个字符串变成字符数组,用双指针来做。

Leave a Comment

您的电子邮箱地址不会被公开。 必填项已用 * 标注