立即前往

活动

天翼云最新优惠活动,涵盖免费试用,产品折扣等,助您降本增效!
查看全部活动
热门活动
  • 智算采购季 热销S6云服务器2核4G限时88元/年起,部分主机可加赠对象存储组合包!
  • 免费体验DeepSeek,上天翼云息壤 NEW 新老用户均可免费体验2500万Tokens,限时两周
  • 云上钜惠 HOT 爆款云主机全场特惠,更有万元锦鲤券等你来领!
  • 算力套餐 HOT 让算力触手可及
  • 天翼云脑AOne NEW 连接、保护、办公,All-in-One!
  • 一键部署Llama3大模型学习机 0代码一键部署,预装最新主流大模型Llama3与StableDiffusion
  • 中小企业应用上云专场 产品组合下单即享折上9折起,助力企业快速上云
  • 息壤高校钜惠活动 NEW 天翼云息壤杯高校AI大赛,数款产品享受线上订购超值特惠
  • 天翼云电脑专场 HOT 移动办公新选择,爆款4核8G畅享1年3.5折起,快来抢购!
  • 天翼云奖励推广计划 加入成为云推官,推荐新用户注册下单得现金奖励
免费活动
  • 免费试用中心 HOT 多款云产品免费试用,快来开启云上之旅
  • 天翼云用户体验官 NEW 您的洞察,重塑科技边界

智算服务

打造统一的产品能力,实现算网调度、训练推理、技术架构、资源管理一体化智算服务
智算云(DeepSeek专区)
科研助手
  • 算力商城
  • 应用商城
  • 开发机
  • 并行计算
算力互联调度平台
  • 应用市场
  • 算力市场
  • 算力调度推荐
一站式智算服务平台
  • 模型广场
  • 体验中心
  • 服务接入
智算一体机
  • 智算一体机
大模型
  • DeepSeek-R1-昇腾版(671B)
  • DeepSeek-R1-英伟达版(671B)
  • DeepSeek-V3-昇腾版(671B)
  • DeepSeek-R1-Distill-Llama-70B
  • DeepSeek-R1-Distill-Qwen-32B
  • Qwen2-72B-Instruct
  • StableDiffusion-V2.1
  • TeleChat-12B

应用商城

天翼云精选行业优秀合作伙伴及千余款商品,提供一站式云上应用服务
进入甄选商城进入云市场创新解决方案
办公协同
  • WPS云文档
  • 安全邮箱
  • EMM手机管家
  • 智能商业平台
财务管理
  • 工资条
  • 税务风控云
企业应用
  • 翼信息化运维服务
  • 翼视频云归档解决方案
工业能源
  • 智慧工厂_生产流程管理解决方案
  • 智慧工地
建站工具
  • SSL证书
  • 新域名服务
网络工具
  • 翼云加速
灾备迁移
  • 云管家2.0
  • 翼备份
资源管理
  • 全栈混合云敏捷版(软件)
  • 全栈混合云敏捷版(一体机)
行业应用
  • 翼电子教室
  • 翼智慧显示一体化解决方案

合作伙伴

天翼云携手合作伙伴,共创云上生态,合作共赢
天翼云生态合作中心
  • 天翼云生态合作中心
天翼云渠道合作伙伴
  • 天翼云代理渠道合作伙伴
天翼云服务合作伙伴
  • 天翼云集成商交付能力认证
天翼云应用合作伙伴
  • 天翼云云市场合作伙伴
  • 天翼云甄选商城合作伙伴
天翼云技术合作伙伴
  • 天翼云OpenAPI中心
  • 天翼云EasyCoding平台
天翼云培训认证
  • 天翼云学堂
  • 天翼云市场商学院
天翼云合作计划
  • 云汇计划
天翼云东升计划
  • 适配中心
  • 东升计划
  • 适配互认证

开发者

开发者相关功能入口汇聚
技术社区
  • 专栏文章
  • 互动问答
  • 技术视频
资源与工具
  • OpenAPI中心
开放能力
  • EasyCoding敏捷开发平台
培训与认证
  • 天翼云学堂
  • 天翼云认证
魔乐社区
  • 魔乐社区

支持与服务

为您提供全方位支持与服务,全流程技术保障,助您轻松上云,安全无忧
文档与工具
  • 文档中心
  • 新手上云
  • 自助服务
  • OpenAPI中心
定价
  • 价格计算器
  • 定价策略
基础服务
  • 售前咨询
  • 在线支持
  • 在线支持
  • 工单服务
  • 建议与反馈
  • 用户体验官
  • 服务保障
  • 客户公告
  • 会员中心
增值服务
  • 红心服务
  • 客户支持计划
  • 专家技术服务
  • 备案管家

了解天翼云

天翼云秉承央企使命,致力于成为数字经济主力军,投身科技强国伟大事业,为用户提供安全、普惠云服务
品牌介绍
  • 关于天翼云
  • 智算云
  • 天翼云4.0
  • 新闻资讯
  • 天翼云APP
基础设施
  • 全球基础设施
  • 产品能力
  • 信任中心
最佳实践
  • 精选案例
  • 超级探访
  • 云杂志
  • 分析师和白皮书
  • 天翼云·创新直播间
市场活动
  • 2025智能云生态大会
  • 2024智算云生态大会
  • 2023云生态大会
  • 2022云生态大会
  • 天翼云中国行
天翼云
  • 活动
  • 智算服务
  • 产品
  • 解决方案
  • 应用商城
  • 合作伙伴
  • 开发者
  • 支持与服务
  • 了解天翼云
    • 关系数据库SQL Server版
    • 企业主机安全
    • 云防火墙
    • CDN加速
    • 物理机
    • GPU云主机
    • 天翼云电脑(政企版)
    • 天翼云电脑(公众版)
    • 云主机备份
    • 弹性云主机
      搜索发现
      关系数据库SQL Server版企业主机安全云防火墙CDN加速物理机GPU云主机天翼云电脑(政企版)天翼云电脑(公众版)云主机备份弹性云主机
    • 文档
    • 控制中心
    • 备案
    • 管理中心
    • 登录
    • 免费注册

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    首页 知识中心 软件开发 文章详情页

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    2024-12-20 07:55:14 阅读次数:18

    Python,函数,分割,字符串,数据类型,输入,输出

    输入与输出

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    导读

    大家好,很高兴又和大家见面啦!!!

    在上一篇内容中我们介绍了Python中的数据类型。经过上一篇的介绍,我们不难发现Python与C/C++还是有所不同的,不管是变量的数据类型也好,还是数据类型的种类也好,又或者是类型之间的转化也好,都是存在着一定的差异:

    1. 变量的数据类型之间的差异:
    • C/C++中的变量的数据类型为静态数据类型
    • Python中的变量的数据类型为动态数据类型
    1. 数据类型种类之间的差异:
    • C语言中共有6大数据类型:
    • 整型——字符型(char)、短整型(short)、整型(int)、长整型(long)、更长的整型(long long)
    • 浮点型——单精度浮点型(float)、双精度浮点型(double)
    • 布尔型——真(true)和假(false)
    • 指针型——整型指针型、浮点型指针型、数组指针型、指针指针型(多级指针)、结构体指针型
    • 数组型——整型数组型、浮点型数组型、指针数组型、结构体数组型、数组数组型(多维数组)
    • 自定义类型——结构体类型、枚举类型、联合体类型
    • 在Python中共有7大数据类型:
    • 数字(Number)——整型(int)、浮点型(float)、复数(complex)
    • 字符串(String)——由单引号''或者双引号""表示
    • 布尔(Bool)——整型(int)的子类型
    • 列表(List)
    • 元组(Tuple)
    • 字典(Dictionary)
    • 集合(Set)
    1. 数据类型之间的转换的差异:
    • C语言中的数据类型转换:
    • 隐式类型转换:
    • char/short/int之间的运算会通过整型提升与截断的方式完成运算:
    • int/float/long/double/long long/long double之间的运算会通过算术转换的方式完成运算——低等级的数据类型会无条件转换成高等级的数据类型;
    • 显示类型转换:
    • 通过强制类型转换操作符()完成转换
    • Python中的数据类型转换:
    • 隐式类型转换:
    • bool < int < float < complex 之间的运算,较小的数据类型会无条件转换成较大的数据类型;
    • 显式类型转换:
    • 通过类型转换内置函数完成转换

    对于不同的计算机语言,输入与输出都是至关重要的一个内容,它代表着使用者与计算机之间的交互方式。不同的语言对于输入输出的方式都有着不同的探索:

    • C语言中的输入与输出:
    • 通过scanf()、getc()、gets()、fscanf()……等库函数实现输入;
    • 通过printf()、putc()、puts、fprintf()……等库函数实现输出;
    • C++中的输入与输出:
    • 通过cin、wcin与流提取>>操作符实现输入
    • 通过cout、wcout与流插入<<操作符实现输出

    那对于Python而言,它又会有什么样的输入输出方式呢?在今天的内容中我们将会对其输入与输出进行探讨。

    一、Python中的输出

    在数据结构中我们有学习过,对于一个算法而言,可以有0个输入,至少有1个输出,因此,输出对于一门计算机语言来说,是至关重要的存在。

    1.1 基本用法

    在前面的介绍中,我们已经开始接触了Python中的输出方式——通过print()函数实现输出:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    在Python中,print函数可以直接用于输出字符串、变量的值以及表达式的值,并且在输出时,函数会自动输出一个换行,如果我们希望将结果输出在同一行,那就需要给函数传入第二个参数——end,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    这种换行输出与不换行输出就是print函数的一个最基础的用法。在Python中,我们同样可以像C/C++一样实现格式化的输入与输出;

    1.2 格式化输出

    Python最早支持格式化打印时是效仿的C语言通过printf来实现。但是printf实现时会存在一个问题,当我们在打印的过程中使用了错误的占位符,就容易导致结果出现错误,因此在Python 3.6版本中对此进行了改进,开始支持f-string的格式化打印方式:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    格式化输出的一个基本用法就是通过在字符串前面加上一个f,字符串中通过花括号{}来格式化输出字符串与花括号中的值:

    • f表示的是format——格式化
    • {}表示的是需要输出对象的值——可以是具体的对象、表达式、函数……

    这种输出方式的优势在于我们不需要对输出的值的具体类型进行判断了,也就不需要再使用占位符进行输出。

    1.3 通过:格式化值的输出

    在Python中,如果我们想实现对值的输出进行格式化,如输出小数时指定输出小数位数、输出整数时指定输出整数宽度,这时我们就可以通过冒号:来进行进一步的格式化输出,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    在Python中对于整数宽度的格式化输出我们不难发现,它并不是像C语言中的通过宽度值的正负来进行不同方向的宽度输出,而是统一的进行右对齐,宽度值的绝对值为输出整数的最小宽度。

    那如果我想要指定对齐的方向应该如何操作呢?这里就需要用到对齐符号:

    • 左对齐——<
    • 右对齐——>
    • 居中对齐——^

    如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    这时有朋友可能就有疑问了,这个整型确实根据不同的对齐符号进行了不同方向的对齐,为什么小数没有变化呢?这是不是说明这些对齐符号对小数的输出不起作用呢?

    实际上并不是这样,我们只需要给小数的整数部分加上宽度,即可看到对应的对齐,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,当给输出值指定宽度后,小数也会根据不同的对齐符号来进行对齐。为什么会这样呢?

    这就涉及到值的宽度和精度的问题了:

    • 宽度——输出值的最小字符,如宽度为10,输出时最少输出10个字符,这时就会有2种情况:
    • 输出的值的字符数量<10:不足十个字符的部分用空格填补;
    • 输出的值的字符数量>=10:正常输出对应的值
    • 精度——输出值的小数位数,如精度为3,输出时保留3位小数,这时同样有两种情况:
    • 输出的值的小数位数<3:不足的位数用0填补;
    • 输出的值的小数位数>=3:超出的部分按四舍五入的方式保留小数;

    实际上所谓的对齐是根据值的输出宽度所决定的,我们对小数保留不同的位数这只是值的输出精度:

    • 当只指定精度不指定宽度时,默认宽度为输出值的实际宽度,因此我们会看到输出的数值都是左对齐的形式
    • 当只指定宽度不指定精度时,默认的精度为6,我们会看到小数点后的六位小数;

    1.4 其它格式化输出

    除了上述的这些格式化输出的用法外,我们通过:还能实现按不同进制输出、输出正负号、以百分比的格式输出、以逗号分隔的数字形式输出、以指数计数法的形式输出等格式化输出,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    这里需要注意的是保留符号输出与输出正负值的区别:

    • 保留符号输出——在冒号右侧添正负号:
    • 值为正:添正号则保留正号输出;添负号则直接输出原值
    • 值为负:添正号则直接输出原值;添负号则保留负号输出
    • 正负值输出——在冒号左侧添正负号:
    • 添正号则正常输出
    • 添负号则输出相反数

    输出的内容我们就先介绍到这里,大家如果感兴趣的话可以复制这些测试代码自己下去测试一下:

    # print(f{:})——格式化输出值
    print("Python 中的格式化输出值")
    a = 3.1415926
    print(f"{a:.0f}")   # 保留0为小数——按四舍五入
    print(f"{a:.3f}")   # 保留3位小数
    print(f"{a:10f}")   # 宽度为10
    print(f"{a:<10.3f}")    # 左对齐,保留3位小数
    print(f"{a:>10.3f}")    # 右对齐,保留3位小数
    print(f"{a:^10.3f}")    # 居中对齐,保留3位小数
    a = 5
    print(f"{a:10d}")   # 宽度为10
    print(f"{a:-10d}")   # 宽度为10
    print(f"{a:<10d}")   # 左对齐,宽度为10
    print(f"{a:>10d}")   # 右对齐,宽度为10
    print(f"{a:^10d}")   # 居中对齐,宽度为10
    print("\n")
    
    # print(f{:})——格式化输出值的其它格式化输出
    a = -1.5263478
    print(f"{a:+.0f}")  # 保留正号输出,不保留小数
    print(f"{a:-.0f}")  # 保留符号输出,不保留小数
    print(f"{+a:.0f}")  # 输出正值,不保留小数
    print(f"{-a:.0f}\n")  # 输出负值,不保留小数
    a = 1.5263478
    print(f"{a:+.0f}")  # 保留正号输出,不保留小数
    print(f"{a:-.0f}")  # 保留负号输出,不保留小数
    print(f"{+a:.0f}")  # 输出正值,不保留小数
    print(f"{-a:.0f}")  # 输出负值,不保留小数
    print(f"{a:.2%}\n")  # 以百分号的形式输出,保留2位小数
    a = 1000000
    print(f"{a:,}")  # 以逗号分隔的形式输出
    print(f"{a:.2e}")  # 以指数计数法的形式输出
    print(f"{a:b}")     # 以二进制的形式输出
    print(f"{a:o}")     # 以八进制的形式输出
    print(f"{a:d}")     # 以十进制的形式输出
    print(f"{a:x}")     # 以十六进制的形式输出

    二、Python中的输入

    Python中的输入与输出一样,同样借助于内建函数。

    Python中执行输入的内建函数为input()——标准输入函数,返回一个字符串。

    这时有朋友可能就会有疑问了,如果只是通过这个内建函数来执行输入,那我们如何来输入数字呢?

    现在有朋友可能已经反应过来了——通过int()来对字符串进行类型转换。

    没错,在Python中,我们通过input()这个输入函数获取到的就是我们输入的一行字符串,为了能够让我们输入的内容变成我们需要的数据,这时就需要通过一系列的对字符串进行操作的内置函数来完成。具体的内容在后面的篇章中会进行详细介绍,这里我们就介绍一下如果通过input函数获取单个数据和多个数据。

    2.1 基本用法

    input()作为Python中的输入函数它仅有一个参数,也可以没有参数。其参数的内容为一个字符串,字符串中的内容会直接输出到控制台上,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,我们输入的内容为绿色的内容,程序输出的内容为白色的内容。

    这里有一点需要说明一下,可能有朋友第一次使用这个函数是比较疑惑,在程序运行后输入的内容会出现在代码行,而不是在控制台,这个问题应该怎么解决呢?

    很简单我们只需要将鼠标移动到控制台窗口,在想要执行输入的位置点击一下即可,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    我们可以看到此时运行程序时,光标是停留在代码行,并在不停的闪烁,这时我们只需要将光标移动到下方的控制台窗口即可,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,当我们使用鼠标在下方控制台窗口中点击一下后,光标就会移动到控制台中,这时我们就可以执行输入了,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    当我们执行输入后,光标会自动移动到执行输入的那一行。当然为了看的更清楚一点,我们可以在函数中传入一个字符串来作为输入的提示信息,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,虽然此时光标还是停留在代码行,但是控制台窗口中已经将提示信息给打印了出来,这样我们就能更直观的知道我们应该在哪一行进行输入。

    以上就是input函数的一个基本用法,通过这个基本用法我们就可以获取到输入的字符串,但是我们应该如何获取多个数据呢?难道是通过多个input吗?

    接下来我们就来简单介绍一下如何通过一个input函数获取多个数据。

    2.2 split()方法

    在Python的字符串中存在一系列的内建函数,这些函数只能够对字符串起作用,因此我们称这一类函数为方法。

    在字符串的各种方法中有一种方法可以将字符串分割成多个小字符串,并返回一个列表,这个方法就是我们现在要介绍的split()。

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    简单的理解就是该函数有两个参数:

    • 参数1:用来分割字符串的分隔符
    • 参数2:分割字符串的分隔次数

    这两个参数都是有一个默认值,当我们不对其进行传参时,split默认以所有的空字符为分隔符对整个字符串中存在空字符的位置进行分割,并将分割后的所有字符串存放入一个列表中进行返回,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,此时我们就获得了多个数字字符串,当我们需要获取这些数字时,我们就可以通过循环以及类型转换的相关函数对所有的字符串执行类型转换即可,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,此时我们就将列表a中的所有字符串转换成了整数。当然我们也可以传入固定的分隔符和分割次数来进行字符串分割,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,此时我们以空格作为分隔符,让函数将字符串分割两次时,函数会根据空格的位置依次进行分割,因此我们可以看到当输入的内容中存在多个空格时,则会出现一些空字符串。

    那有没有办法在进行分割时直接去掉这些空格字符串呢?这里就需要我们直接通过split来执行分割,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    可以看到,此时我指定的参数是分割次数,函数需要对字符串分割两次,此时无论输入的字符串中间有多少空格,被分割的对象左右的空格都会被作为分隔符。

    因此我们可以看到函数首先自动去掉了首字符左侧的空字符,以右侧的空字符为分割点进行第一次分割,以第二个单词右侧的空字符为第二个分割点进行第二次分割,而第三个单词开始的内容则被作为一整个字符串存入列表中。

    从这次测试我们可以得到一个结论:

    • 当我们想要去掉多个单词中间的多个空格时,可以通过split()直接对整个字符串进行分割

    2.3 split()习题演练

    151. 反转字符串中的单词——双指针、字符串——中等

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    这一题在力扣中难度为中等,如果通过C语言来解题的话则有三种解题思路:

    • 思路1:借助额外的空间来以单词为单位逆序存储源空间中的字符串
    • 思路2:先反转整个字符串,后反转字符串中的每一个单词
    • 思路3:将字符串分割成一个一个的单词,再以单词为一个元素进行反转,最后通过空格拼接所有单词

    思路1和思路2是通过双指针来进行求解,而思路3则是通过字符串中的不同的库函数来进行求解,三种思路都是可行的,有兴趣的朋友可以通过C语言来尝试一下。

    下面我们如果通过Python来解题的话,我们可以直接采用思路3的方式来完成求解:

    1. 通过input()获取输入的字符串并通过split()对字符串进行分割获取由单词组成的字符串列表
    2. 通过revers()方法完成列表中的元素反转
    3. 通过join()方法指定' '作为分隔符来连接字符串列表中的所有元素

    对应代码如下所示:

    s = input().split()  # 1.通过input获取字符串并通过split分割字符串
    s.reverse()  # 通过reverse()方法反转列表中的元素
    s = ' '.join(s)  # 通过join()方法指定空格为分隔符连接列表中的元素
    print(s)

    测试结果如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    如果是写成函数的话,则不再需要通过input()来获取字符串,可以直接通过split()将传入的参数进行反转,并直接返回完成连接的字符串,如下所示:

    【Python】Python中的输入与输出——内附leetcode【151.反转字符串中的单词】的C语言三种解法以及Python解法

    下面我给大家看一下通过C语言要实现这一题的相关代码:

    思路1:双指针——通过额外的空间求解

    char* reverseWords(char* s) {
    	//去收尾空格
    	int len = strlen(s);
    	int l = 0, r = len - 1;
    	while (s[l] == ' ') {
    		for (int i = l; s[i]; i++) {
    			s[i] = s[i + 1];
    		}
    		len--;
    		r--;
    	}
    	while (s[r] == ' ') {
    		len--;
    		r--;
    	}
    	//申请新空间
    	char* str = (char*)calloc(len + 1, sizeof(char));
    	assert(str);
    	//逆序拷贝单词
    	l = r;
    	int i = 0; //新字符串下标
    	r++;
    	while (l >= 0) {
    		if (s[l] == ' ') {
    			int flag = 0;
    			for (int j = l + 1; j < r; j++) {
    				str[i++] = s[j];
    				flag = 1;
    			}
    			if (flag)
    				str[i++] = ' ';
    			r = l;
    		}
    		l--;
    	}
    	for (int j = 0; j < r; j++) {
    		str[i++] = s[j];
    	} 
    	return str;
    }

    思路2:双指针——反转源字符串再反转每一个单词

    void move(char* s,int l) {
    	for (int i = l; s[i]; i++) {
    		s[i] = s[i + 1];
    	}
    }
    void swap(char* l, char* r) {
    	char tmp = *l;
    	*l = *r;
    	*r = tmp;
    }
    char* reverseWords(char* s) {
    	//去收尾空格
    	int len = strlen(s);
    	int l = 0, r = len - 1;
    	while (s[l] == ' ') {
    		move(s, l);
    		len--;
    		r--;
    	}
    	while (s[r] == ' ') {
    		s[r] = '\0';
    		len--;
    		r--;
    	}
    	//反转整个字符串
    	while (l < r) {
    		swap(&s[l], &s[r]);
    		l++, r--;
    	}
    	//反转单词
    	l = 0, r = 1;
    	while (r < len) {
    		//获取完整单词长度
    		while (s[r] && s[r] != ' ')
    			r++;
    		//处理最后一个单词
    		r--;
    		//记录单词长度
    		int end = r + 1;
    		//翻转单词
    		while (l < r) {
    			swap(&s[l], &s[r]);
    			l++, r--;
    		}
    		//记录下一个单词首字母位置
    		l = end + 1;
    		//去掉单词间的空格
    		while (l <= len && s[l] == ' ') {
    			move(s, l);
    			len--;
    		}
    		r = l;
    	}
    	return s;
    }

    思路三:字符串——通过字符串中的库函数求解

    void Swap(char** ch1, char** ch2) {
    	char* tmp = *ch1;
    	*ch1 = *ch2;
    	*ch2 = tmp;
    }
    char* reverseMessage(char* message) {
        int len = strlen(message);
    	char* str[10000] = { 0 };
    	int i = 0;
    	//分割字符串
    	for (str[i] = strtok(message, " "); str[i]; str[i] = strtok(NULL, " ")) {
    		i++;
    	}
    	//删除空格
    	for (int j = 0; j < i; j++) {
    		if (!str[j])
    			str[j] = str[j + 1];
    	}
    	if (str[0] == NULL)
    		return "";
    	//反转单词
    	int l = 0, r = i - 1;
    	while (l < r) {
    		Swap(&str[l], &str[r]);
    		l++, r--;
    	}
    	char* ans = (char*)calloc(len + 1, 1);
    	if (!ans)
    		return NULL;
    	strcat(ans, str[0]);
    	//连接字符串
    	for (int j = 1; j < i; j++) {
    		strcat(ans, " ");
    		strcat(ans, str[j]);
    	}
    	return ans;
    }

    从这里可以看到,Python这门语言确实够简洁的,我们想要实现的功能就3点,转换成对应的代码也就3条语句。

    希望通过这道力扣网的练习题,大家能够理解split()方法的用法。对于字符串中的其它方法以及列表的方法,在后续的内容中会进一步介绍这里就不在继续展开了。

    版权声明:本文内容来自第三方投稿或授权转载,原文地址:https://blog.51cto.com/u_16231477/11278055,作者:蒙奇D索隆,版权归原作者所有。本网站转在其作品的目的在于传递更多信息,不拥有版权,亦不承担相应法律责任。如因作品内容、版权等问题需要同本网站联系,请发邮件至ctyunbbs@chinatelecom.cn沟通。

    上一篇:使用Spring Boot集成Actuator监控

    下一篇:探秘Segmentation Fault错误:程序猿的噩梦

    相关文章

    2025-04-23 08:18:38

    基础—SQL—DQL(数据查询语言)聚合函数

    聚合函数指的是讲一列数据作为一个整体,进行纵向的计算。

    2025-04-23 08:18:38
    函数 , 员工 , 操作 , 查询 , 统计 , 聚合
    2025-04-23 08:18:38

    C语言:深入理解指针(1)

    C语言:深入理解指针(1)                                                  

    2025-04-23 08:18:38
    const , 内存 , 函数 , 变量 , 地址 , 字节 , 指针
    2025-04-23 08:18:32

    创建型模式-单例模式

    单例模式是一种创建型的设计模式,主要用于在当前项目中需要实例化一个对象的情况。

    2025-04-23 08:18:32
    函数 , 创建 , 单例 , 实例 , 静态
    2025-04-23 08:18:32

    Qt 中文件操作

    Qt中文件的操作一般使用的是QFile类。QFile是一种用于读取和写入文本、二进制文件和资源的I/O设备。QFile可以单独使用,或者更方便地与QTextStream或QDataStream一起使用。可进行文件的读写,拷贝。删除等操作。

    2025-04-23 08:18:32
    使用 , 函数 , 文件
    2025-04-23 08:18:32

    C语言中的数据类型和运算符

    C语言中的数据类型和运算符

    2025-04-23 08:18:32
    gt , 数据类型 , 表达式 , 赋值 , 运算符
    2025-04-23 08:18:32

    行为模式---观察者模式

    观察者模式是设计模式的行为模式,是定义一种阅读机制。它的核心思想是定义对象间的一对多的依赖关系,当有一个对象发生改变之后通知多个观察对象。

    2025-04-23 08:18:32
    函数 , 对象 , 模式 , 观察者 , 订阅
    2025-04-23 08:18:32

    TCP协议传输过程

    TCP协议传输过程

    2025-04-23 08:18:32
    函数 , 变量 , 接字
    2025-04-23 08:18:21

    【Python】学习笔记01

    【Python】学习笔记01

    2025-04-23 08:18:21
    Python , 程序 , 编译 , 逻辑 , 面向对象
    2025-04-22 09:44:09

    Go基本数据类型与string类型互转

    Go基本数据类型与string类型互转

    2025-04-22 09:44:09
    字符串 , 类型
    2025-04-22 09:44:09

    【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

    【Linux】关系运算符、shell判断脚本执行时是否有传参、判断文件/文件夹是否存在、判断字符串是否相等、判断上个命令执行是否正常、判断字符串是否为空

    2025-04-22 09:44:09
    判断 , 字符串 , 执行 , 是否
    查看更多
    推荐标签

    作者介绍

    天翼云小翼
    天翼云用户

    文章

    32777

    阅读量

    4830673

    查看更多

    最新文章

    C语言:深入理解指针(1)

    2025-04-23 08:18:38

    基础—SQL—DQL(数据查询语言)聚合函数

    2025-04-23 08:18:38

    C语言中的数据类型和运算符

    2025-04-23 08:18:32

    【Python】学习笔记01

    2025-04-23 08:18:21

    【C语言小游戏--猜数字】

    2025-04-22 09:44:09

    【C++】初识类和对象

    2025-04-22 09:28:19

    查看更多

    热门文章

    Python标准输入输出

    2023-04-18 14:15:05

    Python高级变量类型

    2024-09-24 06:30:08

    mysql列存储引擎-字符串属性列-列压缩测试

    2023-04-23 09:34:23

    Python:matplotlib分组Bar柱状图

    2024-09-25 10:15:01

    刷题——Python篇(2)类型转换

    2023-02-13 07:58:38

    Python Pandas将多个dataframe写入Excel文件

    2023-04-21 03:11:35

    查看更多

    热门标签

    java Java python 编程开发 开发语言 代码 算法 线程 html Python 数组 C++ javascript c++ 元素
    查看更多

    相关产品

    弹性云主机

    随时自助获取、弹性伸缩的云服务器资源

    天翼云电脑(公众版)

    便捷、安全、高效的云电脑服务

    对象存储

    高品质、低成本的云上存储服务

    云硬盘

    为云上计算资源提供持久性块存储

    查看更多

    随机文章

    Python学习实验报告(2)

    C语言入门:printf函数的详细介绍

    ​​软件开发入门教程网之​​C++ 标准库

    C++ 实现Python的 String 的 title()函数

    ArcGIS模型构建器自动生成地理坐标系、投影坐标系转换的代码

    python简单介绍及基础知识(二)

    • 7*24小时售后
    • 无忧退款
    • 免费备案
    • 专家服务
    售前咨询热线
    400-810-9889转1
    关注天翼云
    • 权益商城
    • 天翼云APP
    • 天翼云微信公众号
    服务与支持
    • 备案中心
    • 售前咨询
    • 智能客服
    • 自助服务
    • 工单管理
    • 客户公告
    • 涉诈举报
    账户管理
    • 管理中心
    • 订单管理
    • 余额管理
    • 发票管理
    • 充值汇款
    • 续费管理
    快速入口
    • 权益商城
    • 文档中心
    • 最新活动
    • 免费试用
    • 信任中心
    • 天翼云学堂
    云网生态
    • 甄选商城
    • 渠道合作
    • 云市场合作
    了解天翼云
    • 关于天翼云
    • 天翼云APP
    • 服务案例
    • 新闻资讯
    • 联系我们
    热门产品
    • 云电脑
    • 弹性云主机
    • 云电脑政企版
    • 天翼云手机
    • 云数据库
    • 对象存储
    • 云硬盘
    • Web应用防火墙
    • 服务器安全卫士
    • CDN加速
    热门推荐
    • 云服务备份
    • 边缘安全加速平台
    • 全站加速
    • 安全加速
    • 云服务器
    • 云主机
    • 智能边缘云
    • 应用编排服务
    • 微服务引擎
    • 共享流量包
    更多推荐
    • web应用防火墙
    • 密钥管理
    • 等保咨询
    • 安全专区
    • 应用运维管理
    • 云日志服务
    • 文档数据库服务
    • 云搜索服务
    • 数据湖探索
    • 数据仓库服务
    友情链接
    • 中国电信集团
    • 189邮箱
    • 天翼企业云盘
    • 天翼云盘
    ©2025 天翼云科技有限公司版权所有 增值电信业务经营许可证A2.B1.B2-20090001
    公司地址:北京市东城区青龙胡同甲1号、3号2幢2层205-32室
    • 用户协议
    • 隐私政策
    • 个人信息保护
    • 法律声明
    备案 京公网安备11010802043424号 京ICP备 2021034386号