题目描述:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 1:
输入: “Let’s take LeetCode contest”
输出: “s’teL ekat edoCteeL tsetnoc”
注意:在字符串中,每个单词由单个空格分隔,并且字符串中不会有任何额外的空格。
来源:力扣(LeetCode)
链接:https://leetcode-cn.com/problems/reverse-words-in-a-string-iii
著作权归领扣网络所有。商业转载请联系官方授权,非商业转载请注明出处。
解答:
char * reverseWords(char * s)
{
char *p = NULL;
char *ptemp = NULL;
int i = 0;
int j = 0;
int Num = 0;
int token = 0;
char temp[1000]= {0};
p = s;
ptemp = p;
Num = strlen(p);
for(i = 0;i<=Num;i++) //注意等号
{
if(' '== *(p + i) || '\0' == *(p + i))
{
token = p + i - ptemp; //每一个单词的长度:空格或者'\0' - 前一个单词的第一个字母位置
//printf("%d\n",token);
//开始反转
for(j = 0; j<token; j++)
{
temp[token - j - 1] = *(ptemp + j);
}
for(j = 0; j<token; j++)
{
*(ptemp + j) = temp[j];
}
ptemp = p + i + 1; //后一个单词的第一个字母位置
}
}
return s;
}
运行结果:

本文介绍了一种算法,用于反转字符串中每个单词的字符顺序,同时保持空格和单词的初始顺序不变。通过C语言实现,详细展示了如何遍历字符串,识别单词边界并进行反转操作。
&spm=1001.2101.3001.5002&articleId=103287357&d=1&t=3&u=6588eade0d6a44a19edd3582b75fa769)
3366

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



