剑指Offer(Python多种思路实现):翻转字符串
面试58题:
题目:翻转字符串
题:牛客最近来了一个新员工Fish,每天早晨总是会拿着一本英文杂志,写些句子在本子上。同事Cat对Fish写的内容颇感兴趣,有一天他向Fish借来翻看,但却读不懂它的意思。例如,“student. a am I”。后来才意识到,这家伙原来把句子单词的顺序翻转了,正确的句子应该是“I am a student.”。Cat对一一的翻转这些单词顺序可不在行,你能帮助他么?
解题思路一:Python特性
class Solution:
def ReverseSentence(self, s):
# write code here
temp=s.split()
if len(temp)==0:
return s
return ' '.join(s.split()[::-1])
解题思路二:
class Solution:
def ReverseSentence(self, s):
# write code here
if s==None or len(s)<=0:
return ''
s=list(s)
s=self.Reverse(s)
pStart=0
pEnd=0
listTemp=[]
result=''
#print(s)
while pEnd<len(s):
if pEnd==len(s)-1:
#print(self.Reverse(s[pStart:]))
listTemp.append(self.Reverse(s[pStart:]))
break
if s[pStart]==' ':
pStart +=1
pEnd +=1
listTemp.append(' ')
elif s[pEnd]==' ':
#print(self.Reverse(s[pStart:pEnd]))
listTemp.append(self.Reverse(s[pStart:pEnd]))
pStart=pEnd
else:
pEnd +=1
print(listTemp)
for i in listTemp:
result+=''.join(i)
return result
def Reverse(self,s):
# s是一个list列表
start=0
end=len(s)-1
while(start<end):
s[start],s[end]=s[end],s[start]
start+=1
end-=1
return s