题目描述
牛客最近来了一个新员工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)
作者:huangqiancun
出处:http://www.cnblogs.com/huangqiancun/
本博客若无特殊说明则由作者原创发布,欢迎转载,但请注明出处 :)