反转字符串

【题意描述】

假定给定字符串‘abcdef’,将前3个字符串与后面的字符串进行原地反转,即输出:defabc。(要求:不借助任何python的反转函数)

【解题思路】

将一个字符串分割成需要移动的部分和不需要移动的部分,然后将两个部分的字符串分别反转,最后再对整个字符串进行整体反转。

【主要代码分析】
反转过程:start指向起始位置,end指向结束位置。两者交换后,start加一,end减一,直到两者相等

代码实现如下:

def reverseString(sList):
    start = 0
    end = len(sList)-1
    while start<end :
        sList[start], sList[end] = sList[end], sList[start]
        start += 1
        end -= 1
    return sList

def main(s, n):
    s = list(s)    # 因为python字符串属于不可变对象,所以转换为可变对象以便执行交换
    left = reverseString(s[:n])
    right = reverseString(s[n:])
    result = reverseString(left+right)
    return ''.join(result)

print main('abcdef', 3)    # defabc

 

posted on 2017-08-16 13:05  刘[小]倩  阅读(251)  评论(0编辑  收藏  举报

导航