倒置字符串

简介: 倒置字符串

1.题目描述

题目链接:https://www.nowcoder.com/questionTerminal/8869d99cf1264e60a6d9eff4295e5bab

2.题目分析

思考一下,我们可以分为两步

  • 第一步,将整个字符串逆序
  • 第二步,把逆序后的每个单词再逆序

或者我们可以:

  • 第一步,逆序每个单词
  • 第二步,再逆序整个字符串

  • 逆序字符串,需要告诉字符串的起始位置和结束位置
  • 逆序单词,同样需要告诉单词的起始位置和结束位置

这两种算法思维都是可以的,那我们实践一下

3.代码

我们可以封装一个reverse函数来进行字符串逆序

实现逻辑是这样的

reverse函数

void reverse(char* left,char* right){
    while (left<right) {
    char tmp=*left;
    *left=*right;
    *right=tmp;
    left++;
    right--;
    }
}

逆序整个字符串,调用这个函数,逆序单词同样可以调用这个函数

用while循环,当开始指针遇到空格或者'\0'的时候就停止;没有遇到空格或者'\0'的时候,则是一个单词,逆序这个单词

可以看主函数的代码理解

主函数

#include <stdio.h>
void reverse(char* left,char* right){
    while (left<right) {
    char tmp=*left;
    *left=*right;
    *right=tmp;
    left++;
    right--;
    }
}
int main() {
    char arr[101]={0};
    gets(arr);
    //逆序整个字符串
    int len=strlen(arr);
    reverse(arr,arr+len-1);
    //逆序每个单词
    char* cur=arr;
    while(*cur){
        char* strat=cur;
        while (*cur!=' '&&*cur!='\0') {
            cur++;
        }
        char* end=cur-1;
        reverse(strat, end);
        if(*cur==' ')
        cur++;
    }
    printf("%s\n",arr);
    return 0;
}

这样,我们这个问题就解决了

为什么使用gets()接收字符串呢?

因为scanf()接收字符串,遇到空格就停止不会继续往后读取了

4.总结

同样我们可以感受到,写代码不仅仅是简单的敲敲键盘,更重要的是我们的思维,我们一定要多多练习,锻炼自己的思维能力

一个优秀的程序员肯定是先思考再敲代码的,思维永远走在双手的前面,一起加油吧!小杜陪各位一起成长

相关文章
|
SQL Java 数据库连接
Springboot框架整合Spring Data JPA操作数据
Spring Data JPA是Spring基于ORM和JPA规范封装的框架,简化了数据库操作,提供增删改查等接口,并可通过方法名自动生成查询。集成到Spring Boot需添加相关依赖并配置数据库连接和JPA设置。基础用法包括定义实体类和Repository接口,通过Repository接口可直接进行数据操作。此外,JPA支持关键字查询,如通过`findByAuthor`自动转换为SQL的`WHERE author=?`查询。
344 0
|
消息中间件 监控 Java
搭建cloud项目以及各个依赖和配置说明(一)
搭建cloud项目以及各个依赖和配置说明
1179 0
|
XML Java 应用服务中间件
安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)
安装使用IDEA,修改样式,配置服务,构建Maven项目(超级详细版)
150 0
|
小程序
小程序点击跳转页面并传入一个对象及接受
小程序点击跳转页面并传入一个对象及接受
|
12天前
|
弹性计算 关系型数据库 微服务
基于 Docker 与 Kubernetes(K3s)的微服务:阿里云生产环境扩容实践
在微服务架构中,如何实现“稳定扩容”与“成本可控”是企业面临的核心挑战。本文结合 Python FastAPI 微服务实战,详解如何基于阿里云基础设施,利用 Docker 封装服务、K3s 实现容器编排,构建生产级微服务架构。内容涵盖容器构建、集群部署、自动扩缩容、可观测性等关键环节,适配阿里云资源特性与服务生态,助力企业打造低成本、高可靠、易扩展的微服务解决方案。
1265 5
|
1天前
|
存储 关系型数据库 分布式数据库
PostgreSQL 18 发布,快来 PolarDB 尝鲜!
PostgreSQL 18 发布,PolarDB for PostgreSQL 全面兼容。新版本支持异步I/O、UUIDv7、虚拟生成列、逻辑复制增强及OAuth认证,显著提升性能与安全。PolarDB-PG 18 支持存算分离架构,融合海量弹性存储与极致计算性能,搭配丰富插件生态,为企业提供高效、稳定、灵活的云数据库解决方案,助力企业数字化转型如虎添翼!
|
11天前
|
机器学习/深度学习 人工智能 前端开发
通义DeepResearch全面开源!同步分享可落地的高阶Agent构建方法论
通义研究团队开源发布通义 DeepResearch —— 首个在性能上可与 OpenAI DeepResearch 相媲美、并在多项权威基准测试中取得领先表现的全开源 Web Agent。
1281 87