题目1:翻转单词顺序
# 剑指offer58:翻转字符串
# 题目1:翻转单词顺序
#方法1:调用python内部split函数和切片
def ReverseSentence(s):
str=s.split(' ')
return ' '.join(str[::-1])
s='I am a student.'
ReverseSentence(s)
#方法2:先翻转句子中所有的字符 然后翻转句子中每个单词的顺序
def reverse(s,start,end):
#不过要注意交换前要转为列表
while start<end:
s[start],s[end]=s[end],s[start]
start += 1
end -= 1
return s
def ReverseSentence(s):
if not s:
return s
s=list(s)
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]==' ':
reverse(s,start,end-1)
end += 1
start = end
else:
end+=1
return ''.join(s)
s=' I am a student.'
ReverseSentence(s)
题目2:左旋转字符串
# 题目2:左旋转字符串
#方法1
def LeftRotateString(s,n):
return s[n:]+s[:n]
s='student'
LeftRotateString(s,2)
#方法2:三次翻转就行了
def reverse(s,start,end):
#不过要注意交换前要转为列表
while start<end:
s[start],s[end]=s[end],s[start]
start += 1
end -= 1
return s
def LeftRotateString(s,n):
if not s:
return s
s=list(s)
reverse(s,0,n-1)
reverse(s,n,len(s)-1)
reverse(s,0,len(s)-1)
return ''.join(s)
s='student'
LeftRotateString(s,2)