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语言逆置字符串的主要内容,如果未能解决你的问题,请参考以下文章

如何用c语言实现单链表的逆置?

数据结构代码(用C语言) 单链表的插入和删除

C语言逆置正整数求教

r语言怎样在字符串中加入变量

在UTF8(linux)下,逆置汉字字符串

C语言代码片段