python3.4.4怎么打代码_加快Python 3.4代码的速度

# Super-efficient version# for playing with million-digit palindromesdefstr_lt(x,y):"""Take two integer strings, `x` and `y`,return int(`x`) < int(`y`)"""returnlen(x) n and p is palindromicReturn str(p)Note: `n` must be well-formed, ie no leading 0s or non-digit characters"""# Make sure n is a stringifnotisinstance(n,str):n=str(n)# There are three forms of palindrome:# single digit, x (ab == '')# even number of digits, abba ( x == '')# odd number of digits, abxba ( x is single digit)#iflen(n)==1:# take care of single digit casereturn'11'ifn=='9'elsestr_add_1(n)else:# There are six possibilites for p:## (1) abqr < abba -> p = abba# (2) abqr >= abba -> p = a(b+1)(b+1)a (with carries as needed)# (3) abqr == 9999 -> p = 10001 (carry results in overflow)## (4) abxqr < abxba -> p = abxba# (5) abxqr >= abxba -> p = ab(x + 1)ba (with carries as needed)# (6) abxqr == 99999 -> p = 100001 (carry results in overflow)## Find ab, x, qrhalf=len(n)//2ab=n[:half]x=n[half:-half]# a 0- or 1-digit stringqr=n[-half:]ba=ab[::-1]ifstr_lt(qr,ba):# solve cases (1) and (4)return"".join([ab,x,ba])ifx=='9':# do manual carry from xab1=str_add_1(ab)ba1=ab1[::-1]iflen(ab1)>len(ab):# carry results in overflow - case (6)returnab1+ba1else:# carry but no overflow - case (5)return"".join([ab1,'0',ba1])ifx:# no carry - case (5)return"".join([ab,str_add_1(x),ba])# x == ''ab1=str_add_1(ab)ba1=ab1[::-1]iflen(ab1)>len(ab):# carry results in overflow - case (3)returnab1[:-1]+ba1else:# no overflow - case (2)returnab1+ba1

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值