题目:给你一个字符串 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 ,所以其他单词首字母大写,剩余字母小写。
直接上代码
char* capitalizeTitle(char* title) {
int titleLength = strlen(title);
int start = 0;
for (int i = 0; i <= titleLength; i++) {
// 当遇到空格或者字符串结束符时,处理当前单词
if (title[i] == ' ' || title[i] == '\0') {
if (i - start <= 2) {
// 单词长度小于等于 2,将所有字母转换为小写
for (int j = start; j < i; j++) {
title[j] = tolower(title[j]);
}
}
else {
// 单词长度大于 2,首字母大写,其余字母小写
title[start] = toupper(title[start]);
for (int j = start + 1; j < i; j++) {
title[j] = tolower(title[j]);
}
}
// 更新下一个单词的起始位置
start = i + 1;
}
}
return title;
}
评论 (0)