Python程序员面试算法宝典---解题总结: 第5章 字符串 5.3 如何对字符串进行反转

# -*- coding: utf-8 -*-

'''
Python程序员面试算法宝典---解题总结: 第5章 字符串 5.3 如何对字符串进行反转

题目:
实现字符串的反转,要求不使用任何系统方法,且时间复杂度最小

分析:

关键:
1 ord(char)是获取字符的ascii码
chr(num)可以将数字转换为字符
实现两个数字交换且不使用临时变量的方法为:
a=a^b
b=a^b
a=a^b

参考:
Python程序员面试算法宝典
'''

def reverString(string):
    if not string:
        return
    charList = list(string)
    i = 0
    size = len(charList)
    j = size - 1
    while i < j:
        charList[i] = chr(ord(charList[i]) ^ ord(charList[j]))
        charList[j] = chr(ord(charList[i]) ^ ord(charList[j]))
        charList[i] = chr(ord(charList[i]) ^ ord(charList[j]))
        i += 1
        j -= 1
    return "".join(charList)


def process():
    string = 'a'
    result = reverString(string)
    print result
    string = 'aa'
    result = reverString(string)
    print result
    string = 'ab'
    result = reverString(string)
    print result
    string = 'abc'
    result = reverString(string)
    print result
    string = 'abcd'
    result = reverString(string)
    print result



if __name__ == "__main__":
    process()

猜你喜欢

转载自blog.csdn.net/qingyuanluofeng/article/details/94301139