剑指Offer 44. 翻转单词顺序列 (字符串)
题目描述
牛客最近来了一个新员工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)
剑指Offer 44. 翻转单词顺序列 (字符串)的更多相关文章
- 【剑指Offer】翻转单词顺序列 解题报告(Python)
		[剑指Offer]翻转单词顺序列 解题报告(Python) 标签(空格分隔): 剑指Offer 题目地址:https://www.nowcoder.com/ta/coding-interviews 题 ... 
- 【Java】 剑指offer(58-1) 翻转单词顺序
		本文参考自<剑指offer>一书,代码采用Java语言. 更多:<剑指Offer>Java实现合集 题目 输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变 ... 
- 【剑指offer】翻转单词顺序
		转载请注明出处:http://blog.csdn.net/ns_code/article/details/27372033 题目描写叙述: JOBDU近期来了一个新员工Fish,每天早晨总是会拿着一本 ... 
- [剑指Offer] 44.翻转单词顺序列
		题目描述 牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上.同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思.例如,“student ... 
- 【剑指offer】翻转单词顺序,C++实现
		原创博文,转载请注明出处! 本题牛客网地址 本题代码的github地址 本系列文章的索引地址 # 题目 # 思路 两次翻转,第一次翻转整个句子,第二次翻转每个单词(单词之间用逗号隔开) # ... 
- 《剑指offer》翻转单词顺序列
		本题来自<剑指offer> 反转链表 题目: 思路: C++ Code: Python Code: 总结: 
- Go语言实现:【剑指offer】翻转单词顺序列
		该题目来源于牛客网<剑指offer>专题. 例如,"student. a am I",正确的句子应该是"I am a student." Go语言实 ... 
- 剑指offer42:翻转单词顺序 VS 左旋转字符串(更高效、简便的解法)
		题目:输入一个英文句子,翻转句子中单词的顺序,但单词内字符的顺序不变.为简单起见,标点符号和普通字母一样处理.例如输入字符串"I am a student." ,则输出" ... 
- 剑指 Offer 21. 调整数组顺序使奇数位于偶数前面
		剑指 Offer 21. 调整数组顺序使奇数位于偶数前面 Offer 21 这题的解法其实是考察快慢指针和头尾指针. package com.walegarrett.offer; /** * @Aut ... 
随机推荐
- Linux(5.5版为主)的基本操作命令
			mount 查看挂载目录 cat ~ 查看文件下的内容 touch ~ 创建一个文件 一次性性创建几个文件: touch /tmp/{1,2,3,4}.txt ... 
- 极路由hc5661安装tcpdump
			原先有个tcpdump的插件,但是现在已经下架了. 条件: 已root的极1s HC5661 - 1.4.11.21001s 步骤: ssh进去后,opkg install http://downlo ... 
- 节约内存:Instagram的Redis实践(转)
			Instagram可以说是网拍App的始祖级应用,也是当前最火热的拍照App之一,Instagram的照片数量已经达到3亿,而在Instagram里,我们需要知道每一张照片的作者是谁,下面就是Inst ... 
- nmon监控数据分析
			性能测试中,各个服务器资源占用统计分析是一个很重要的组成部分,通常我们使用nmon这个工具来进行监控以及监控结果输出. 一. 在监控阶段使用类似下面的命令 ./nmon -f write_3s_20v ... 
- 剑指offer(16)合并两个排序的链表
			题目描述 输入两个单调递增的链表,输出两个链表合成后的链表,当然我们需要合成后的链表满足单调不减规则. 题目分析 重点抓住这两个链表都是单挑递增的,因此我们只需要不断地比较他们的头结点就行,明显这是个 ... 
- nginx访问不到
			nginx访问不到 今天,一朋友的一台linux服务器上部署了nginx,但是外部(公网)就是不能访问,于是协助其排查.整体思路如下: 1.确认nginx配置是否ok. 2.确认网络是否可达. 3.是 ... 
- AJAX理解
			注:首先我们要明白请求是什么?请求分两种,一.静态请求(如:返回js.css.图片等) 二.动态请求(返回跟用户有关的数据) http(apache.nginx等)服务器会判断如果是一个静态请求,会直 ... 
- bind封装
			原理:通过apply或者call方法来实现. (1)初始版本 Function.prototype.bind=function(obj,arg){ var arg=Array.prototype.sl ... 
- Unity3D_UGUI判断鼠标或者手指是否点击在UI上
			比如战斗场景,UI和3D场景同时都需要响应触摸事件,如果同时响应可能就会出现触摸UI的时候影响到了3D部分.为了解决这个问题在判断3D响应之前要先判断手指是否点击在UI上. 以前NGUI的时候都是自己 ... 
- 初始FreeMake
			此文章是观看视频学习的,只是一点点基础还不太深 视频地址:http://www.icoolxue.com/play/5773 源码:码云:https://gitee.com/wmjGood/FreeM ... 
