剑指Offer 44. 翻转单词顺序列 (字符串)
2024-10-19 00:21:17
题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
题目地址
思路
思路1:分割成列表,然后对列表翻转,返回合并的字符串。
思路2:先翻转整个字符串,然后翻转每个单词,用两个指针记录每个单词的开始和结尾的位置。遇到 ' ' 说明单词的结尾,需要调节指针。
另外需要注意的是,字符串不能直接修改,需要转成list之后才能直接对每一位进行修改。
Python
# -*- coding:utf-8 -*-
class Solution:
def ReverseSentence(self, s):
# write code here
if not s:
return s
# 思路1
# s = s.split(' ')
# s.reverse()
# return " ".join(s)
# 思路2:
s = list(s)
self.reverse(s, 0, len(s)-1)
start,end = 0,0
while start < len(s):
if s[start] == ' ':
start += 1
end += 1
elif end == len(s) or s[end] == ' ': self.reverse(s,start ,end -1)
end += 1
start = end
else:
end += 1
return ''.join(s)
def reverse(self,s,start,end):
while start < end:
s[start],s[end] = s[end],s[start]
start += 1
end -= 1 if __name__ == '__main__':
result = Solution().ReverseSentence('student. a am I')
print(result)
最新文章
- debian C++ OTL库 用 unixodbc 连接 mysql 小记
- CSS自动换行
- 如何防止JAVA反射对单例类的攻击?
- 【HTML5+MVC4】xhEditor网页编辑器图片上传
- ubuntu编译运行xv6
- 三角形变形记之纯css实现的分布导航条效果
- 谈谈JPA-03-基本注解
- android.os.DeadObjectException memory near r0: 异常处理 Consumer closed input channel or an error occurred. events=0x9
- 【Android】Activity遮罩效果的实现
- 鼠标移动事件--JavaScript
- VMware Player安装centos
- OpenCV——运用于pixels war游戏
- deeplearning.ai 卷积神经网络 Week 4 特殊应用:人脸识别和神经风格转换 听课笔记
- angular之指令
- 1、MySQL主从同步机制及同步中的问题处理
- Android P正式版即将到来:后台应用保活、消息推送的真正噩梦
- LODOP设置打印机不存在不打印
- C# 左右补零
- Django Model模型的实战操作笔记
- 3.4《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)——grepping(检索目标行命令)