题目描述
牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
思路1:先根据空格划分存到list中,再对list反转
def ReverseSentence(self, s):
# write code here
if not s:
return ""
l = []
j = 0
n = len(s)
#l=s.split(' ')
for i in range(n):
if s[i] == ' ':
l.append(s[j:i])
j = i + 1
l.append(s[j:])
begin = 0
end = len(l) - 1
while begin <= end:
l[begin], l[end] = l[end], l[begin]
begin += 1
end -= 1
return ' '.join(l)思路2:先整体反转,再根据空格切分局部反转
def Reverse(self, s, begin, end):
if not s:
return None
while begin <= end:
s[begin], s[end] = s[end], s[begin]
begin += 1
end -= 1
return s
def ReverseSentence(self, s):
# write code here
if not s:
return ""
revS = self.Reverse(list(s), 0, len(s) - 1)
begin = 0
end = 0
while begin <= len(s) - 1:
if revS[begin] == ' ':
begin += 1
end += 1
elif revS[end] == ' ':
self.Reverse(revS, begin, end-1)
end += 1
begin = end
elif end == len(s)-1:
self.Reverse(revS, begin, end)
end += 1
begin = end
else:
end += 1
return "".join(revS)
京公网安备 11010502036488号