Every day a leetcode
题目来源:2129. 将标题首字母大写
解法1:模拟(字符串函数大乱炖)
模拟就行,难点在于字符串函数的掌握。
代码:
//如果单词的长度为 1 或者 2 ,所有字母变成小写
void wordChange1(char *word)
{
for(int i=0;i<strlen(word);i++)
word[i]=tolower(word[i]);
return;
}
//将单词首字母大写,剩余字母变成小写
void wordChange2(char *word)
{
for(int i=0;i<strlen(word);i++)
{
if(i == 0) word[i]=toupper(word[i]);
else word[i]=tolower(word[i]);
}
return;
}
char * capitalizeTitle(char * title){
int len=strlen(title);
char *ans=calloc(len+6,sizeof(char));
char split[2]=" ";
char *word=strtok(title,split);
while(word)
{
if(strlen(word) == 1 || strlen(word) == 2) wordChange1(word);
else wordChange2(word);
memcpy(ans+strlen(ans),word,strlen(word));
strcat(ans,split);
word=strtok(NULL,split);
}
ans[len]='\0';
return ans;
}
结果:

相关函数
C 库函数 - memcpy()
C 库函数 - strcat()
C 库函数 - strtok()
C 库函数 - toupper()
C 库函数 - tolower()
该博客介绍了一种使用C语言实现将标题中每个单词首字母大写,其余字母小写的方法。通过`wordChange1`和`wordChange2`两个辅助函数,分别处理单词长度为1或2的特殊情况和一般情况,利用`tolower`和`toupper`进行字符转换,并借助`strtok`进行单词拆分和`memcpy`、`strcat`进行字符串操作。
2924

被折叠的 条评论
为什么被折叠?



