题目:将一句话的单词进行倒置,标点不倒置。比如 I like beijing. 经过函数后变为:beijing. like I
牛客网链接
这题可以通过三步翻转法来解决,即先将字符串整体逆置,再对逆置后的字符串中每一个单词部分进行逆置。
比如例子中的 I like beijing.
第一步,字符串整体逆置,得到:.gnijieb ekil I
第二步,将字符串中每一个单词逆置,得到:beijing. like I
这里字符串操作的实现非常关键,故单独实现一个函数进行字符串的逆置,由于每个单词的长度不一,因此通过指针来实现字符串的逆置可以对代码进行简化。
代码实现如下:
#include <stdio.h>
#include <string.h>
void ReverseString(char* left, char* right)//反转字符串
{
while(left <= right)
{
char tmp = *left;
*left = *right;
*right = tmp;
left++;
right--;
}
}
int main()
{
char str[100] = "0";
gets(str);
int length = strlen(str);
//将字符串整体翻转
ReverseStr