精选力扣500题 第48题 LeetCode 151,Java实战视频下载

示例 1:


输入:s = "the sky is blue"

输出:"blue is sky the" 

示例 2:


输入:s = "  hello world  "

输出:"world hello"

解释:输入字符串可以在前面或者后面包含多余的空格,但是翻转后的字符不能包括。 

示例 3:


输入:s = "a good   example"

输出:"example good a"

解释:如果两个单词间有多余的空格,将翻转后单词间的空格减少到只含一个。 

示例 4:


输入:s = "  Bob    Loves  Alice   "

输出:"Alice Loves Bob" 

示例 5:


输入:s = "Alice does not even like bob"

输出:"bob like even not does Alice" 

提示:

  • 1 <= s.length <= 104

  • s包含英文大小写字母、数字和空格' '

  • s 中 至少存在一个 单词

进阶:

  • 请尝试使用O(1)额外空间复杂度的原地解法。

2、思路

(数组翻转) O ( n ) O(n) O(n)

对于样例 "the sky is blue"分两步操作:

  • 1、将字符串中的每个单词逆序,样例输入变为: "eht yks si eulb"

  • 2、将整个字符串逆序,样例输入变为:"blue is sky the"

图示样例过程:

1、将ij指针指向字符串的开头,并让j指针跳过字符串s单词的前导空格,指向单词的首非空字符。

2、再让ij指针指向同一个位置,并让j指针跳过若干个非空字符指向单词后的第一个空格。

3、将ij指针之间的单词翻转。

4、我们将翻转后的单词重新赋值给字符串s的前若干个字符(长度为单词的大小),重复上述过程。

5、最后将整个字符串翻转。

细节:

  • 赋值之后要给单词后补个空格作为单词之间的分隔符。

  • 最后要将字符串s之后多余的空格擦除。

最后

本人也收藏了一份Java面试核心知识点来应付面试,借着这次机会可以免费送给我的读者朋友们:

目录:

二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

二面蚂蚁金服(交叉面),已拿offer,Java岗定级阿里P6

Java面试核心知识点

目录:

[外链图片转存中…(img-4Q2MisEU-1628633544741)]

Java面试核心知识点

一共有30个专题,足够读者朋友们应付面试啦,也节省朋友们去到处搜刮资料自己整理的时间!

[外链图片转存中…(img-qQ2nFXCn-1628633544744)]

Java面试核心知识点

资料的领取方式:点赞后【戳面试资料】即可免费获取哦!

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值