题目描述:
给定一个字符串,你需要反转字符串中每个单词的字符顺序,同时仍保留空格和单词的初始顺序。
示例 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;
}
运行结果: