151 反转字符串里的单词

这篇博客主要介绍了如何反转英文句子中单词的顺序,不改变单词内部字符的顺序。通过实例解析了具体的操作步骤和方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

                                                                                                                                      点击此处返回总目录

 

【题目】

 

【方法一】

从:"the sky is blue"

得:"blue is sky the"

就是把原始字符串s进行切分为:"the"、"sky"、"is"和"blue"。然后从后往前拼接得到。

按照空格分开可以借助split()函数实现。用多个空格分开可以写为split(" +")或者split("\\s+")。加号表示一个或多个的意思。

 

 

代码:

 

结果:

 

代码简单是简单,但是慢。。。超级慢。。。

 

【方法一:改进】

为什么这么慢呢?是因为里面有很多ss=ss+st[i]的操作。String类型是不可变的,来回赋值需要花费很多时间倒腾数据。所以可以改成StringBuffer或者StringBuilder来做。

 

改进后代码:

 

结果:

 

结果明显快了很多。

 

【方法一:继续改进】

对比了一下其他人的方法,发现split("\\s+")这个操作比较慢。不如改成split(" "),然后再在后面判断是否等于""高效。

split(" ")方法可能产生个"",所以后面需要判断。判断的时候不能用"==",要用equals()函数。

 

代码:

 

结果:

 

 

 

 

【方法二】

从:"the sky is blue"

得:"blue is sky the"

可以通过反转的方法得到:

首先每个单词反转,得到:"eht yks si eulb"

然后整体反转,得到:"blue is sky the"

 

 

代码:

 

结果:

 

代码比较繁琐,主要是花在前后空格处理、中间空格处理上。

最后效果还是不错。

 

 

 

 

 

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值