题目描述:
给定一个字符串,将字符串中的每个单词逐个翻转。
举例如下:
输入:“I Am a Programmer!"
结果:“I mA a remmargorP!"
函数形式如下:
char *ReverseString(char *Source)
题目分析
- 利用strlen函数计算字符串长度;
- 利用变量start和end建立滑动窗口;
- 建立for循环,注意循环次数为小于等于字符串长度(需要判断字符串终止符号‘\0’);
- if语句判断空格和‘\0’符号,同时调整变量end的值;
- 建立while循环,通过start++和end–来不断缩小滑动窗口,同时交换字符串顺序;
- 最后将变量start调整到新窗口的位置,然后返回变量Source。
代码实现:
char *ReverseString(char *Source)
{
int length = strlen(Source);
int start = 0;
int end = 0;
for(int i = 0;i<= length;i++)
{
if(Source[i]== ' ' || Source[i]=='\0')
{
end = i - 1;
while(start<end)
{
temp = Source[start];
Source[start] = Source[end];
Source[end] = Source[temp];
end--;
start++;
}
start = i + 1;
}
}
return Source;
}
int main()
{
char input[] = "I Am a Programmer!";
printf("输入:%s\n", input);
printf("结果:%s\n", ReverseString(input));
return 0;
}