C语言逆置字符串
Posted 蓝乐
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了C语言逆置字符串相关的知识,希望对你有一定的参考价值。
题目:将一句话的单词进行倒置,标点不倒置。比如 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);
//将字符串整体翻转
ReverseString(str, str + length - 1);
char* start = str;
//将字符串中的每个单词翻转
while(*start)
{
char* end = start;
while(*end != ' ' && *end)//寻找空格或'\\0'
{
end++;
}
ReverseString(start, end - 1);
if(*end == ' ')
{
start = end + 1;
}
else
{
start = end;
}
}
printf("%s",str);
return 0;
}
以上是关于C语言逆置字符串的主要内容,如果未能解决你的问题,请参考以下文章