栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > C/C++/C#

C语言题解:倒置字符串

C/C++/C# 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

C语言题解:倒置字符串

完整代码在最后 题目:

将一句话的单词进行倒置,标点不倒置。比如 "I like beijing.",经过处理后变为:"beijing. like I"。

字符串长度不超过100。

输入描述:

输入一个仅包含小写字母、空格、'.' 的字符串,长度不超过100。

'.' 只出现在最后一个单词的末尾。

输出描述:
依次输出倒置之后的字符串,以空格分割。
示例1  思路讲解:

这题倒置字符串与平常我们遇到的不太一样,平常我们都是将abcdef变成fedcba,而本题我们将

I like beijing。变成beijing。 like l ;它这里是将一个个单词倒序的。

所以正常的倒序是做不到的。而我们是否可以在正常的倒序的基础上将这个进行改进呢?

答案肯定是可以的啦!

我们可以想办法把beijing这个单词先进行倒序,变成gnijieb,然后再利用我们传统的倒序把一个个字母弄到前面去。所以我们先把I like beijing。变成gnijieb。 ekil I 然后再进行倒序就好啦。

我们需要先将单词反序

 然后利用fan这个函数进行倒序

 到这里的时候我们的I like beijing。变成gnijieb。 ekil I  然后我们进行单词的一个变换位置

 我们可以利用fan这个函数再次变换,就可以完成我们想要的效果了

运行结果:

 

完整代码:
#include
#include
#include 
void fan(char* left, char* right)
{
    assert(left);
    assert(right);
    while (left < right)
    {
        char t;
        t = *left;
        *left = *right;
        *right = t;
        left++;
        right--;

        
    }
}
int main()
{
    char arr[101] = { 0 };
    gets(arr);
    char* cur = arr;
    while (*cur)
    {
        char* start = cur;
        char* end = cur;
        while (*end != ' ' && *end != '')
        {
            end++;
            
        }
        if (*cur != '')
            cur = end + 1;
        else
            cur = end;
        fan(start, end - 1);
    }
    int len = strlen(arr);
    fan(arr, arr + len - 1);
    printf("%s ", arr);
    return 0;
}

转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/1037098.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号