剑指offer58:翻转字符串

题目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)
发布了86 篇原创文章 · 获赞 1 · 访问量 8242

猜你喜欢

转载自blog.csdn.net/a1272899331/article/details/104278898