- 双周赛第69场:LeetCode:5960.将标题首字母大写
- 时间:2022-01-08
- 力扣难度:Easy
- 个人难度:Easy
- 数据结构:字符串
- 算法:模拟
双周赛第69场:LeetCode:5960.将标题首字母大写
1. 题目描述
-
题目:原题链接
- 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母大写 :
- 如果单词的长度为 1 或者 2 ,所有字母变成小写。
- 否则,将单词首字母大写,剩余字母变成小写。
- 请你返回 大写后 的 title 。
- 给你一个字符串 title ,它由单个空格连接一个或多个单词组成,每个单词都只包含英文字母。请你按以下规则将每个单词的首字母大写 :
-
输入输出规范
- 输入:标题字符串title
- 输出:修正后的标题字符串
-
输入输出示例
- 输入:title = "capiTalIze tHe titLe"
- 输出:"Capitalize The Title"
2. 方法:字符串模拟
-
思路
- 直接根据题目要求模拟即可
- 通过
split()
方法分割字符串,判断每个单词的长度,并将单词的首字母大写,其他字母小写 - 通过
StringBuilder
拼接结果
-
复杂度分析:n是s字符串的长度
- 时间复杂度:
- 空间复杂度:,需要一个字符串数组存放每个单词,数组长度为
-
题解:直接模拟
public String capitalizeTitle(String title) { if(title == null || title.length() == 0) return null; String[] words = title.split(" "); StringBuilder sb = new StringBuilder(); String lowerWord = ""; for(String word : words) { if(word.length() == 0) continue; if(word.length() <= 2) { sb.append(word.toLowerCase()).append(" "); }else { lowerWord = word.toLowerCase(); sb.append((char) (lowerWord.charAt(0) + 'A' - 'a')).append(lowerWord.substring(1)).append(" "); } } return sb.deleteCharAt(sb.length() - 1).toString(); }
最后
新人LeetCoder,发布的题解有些会参考其他大佬的思路(参考资料的链接会放在最下面),欢迎大家关注我 ~ ~ ~
如果本文有所帮助的话,希望大家可以给个三连「点赞」&「收藏」&「关注」 ~ ~ ~
也希望大家有空的时候光临我的「个人博客」。