- 双周赛第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是字符串的长度
- 时间复杂度:$O(n)$
- 空间复杂度:$O(n)$,需要一个字符串数组存放每个单词,数组长度为$n/C$
题解:直接模拟
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16public 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();
}
本文作者:
Chthollists
发布时间: 2022-01-09 18:10:16
最后更新: 2022-01-27 20:44:38
本文标题: 双周赛第69场:LeetCode:5960.将标题首字母大写
本文链接: https://chthollists.github.io/post/601d5217.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明作者和出处!
发布时间: 2022-01-09 18:10:16
最后更新: 2022-01-27 20:44:38
本文标题: 双周赛第69场:LeetCode:5960.将标题首字母大写
本文链接: https://chthollists.github.io/post/601d5217.html
版权声明: 本作品采用 CC BY-NC-SA 4.0 许可协议进行许可。转载请注明作者和出处!
