牛客网刷题 ——C语言初阶(6指针)——倒置字符串

1. 题目描述:倒置字符串

牛客网OJ题链接

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

输入描述:
每个测试输入包含1个测试用例: I like beijing. 输入用例长度不超过100

输出描述:
依次输出倒置之后的字符串,以空格分割

示例1
输入:
I like beijing.
输出:
beijing. like I

2. 思路

一开始的思路我想着再创建一个数组str2存放我们倒置的字符串,我尝试倒着遍历源数组str1 然后判断第一个空格的地方 将beijing赋值给str2,但是到第二个单词like ,我耗费了蛮多时间,都没办法确定它的结束地址,
因为对于beijing 我是从发现的第一个空格,一直遍历到str1字符串结尾,把这个整体赋值给str2,但是对于like 单词我只能确定它的起始位置,我没有办法确定它的结束位置。

之后在网上看了下才发现原来还有这样的巧妙思路:

先把整个字符串整体逆序,然后再将每个单词逆序
单词逆序的时候需要确定单词的起始位置和结束位置
start初值是我们的数组首元素地址
更新的时候我们判断是否是空格,空格-1位置就是我们第一个单词的结尾,空格+1就是下一个单词的起始位置

示例
在这里插入图片描述

3. 代码实现

#include <stdio.h>
#include<assert.h>

void reserveStr(char* left, char* right) {
   
   
    assert(left && right);
    while (left < right) {
   
   
        char tem = *left;
        *left = *right;
        *right 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值