面试题~翻转字符串中的单词

翻转字符串里的单词


1、题目

 

翻转字符串中的单词,比如字符串 ‘the sky is blue’
翻转以后是’bule is sky the’


 

2、解题思路

 

先将每个单词进行翻转,然后对整个字符串进行翻转,这样,两次翻转后就可以获得题目要求的效果


 

3、示例代码

 

#coding=utf-8
def reverse_str(s):
    lst = list(s)
    flag = False
    start = -1     #单词开始位置
    end = -1       #单词结束位置
    # 遍历字符串,翻转一个单词,最后整体翻转
    for index ,item in enumerate(lst):
        if not flag and not item == ' ':
            flag = True
            start = index
        if flag and item == ' ':
            flag = False
            end = index -1
            reverse_str_ex(lst,start,end)
    # 注意单词结尾
    if flag:
        end = len(lst)-1
        reverse_str_ex(lst,start,end)

    return ''.join(lst[::-1])

def reverse_str_ex(lst,start,end):
    mid = (start+end)/2
    if mid == start:
        mid = end

    for i in range(start,mid):
        tmp = lst[i]
        lst[start] = lst[end-i+start]
        lst[end-i+start] = tmp

print reverse_str('the sky is blue')