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()