Re: [问题] 如何能做到字母进位呢?

楼主: nypgand1 (祈附‧征前御祭)   2014-12-12 14:36:07
想到说如果用“字串 <-> 数字”完全转换会有一个缺点,
要是字串很长,需要进位的情况又不多,那么就有些浪费
以下是我的小小尝试
大小写保持原位,多进位出来的大小写跟着原本的最高位
def alphaPlusOne(s):
char_list = list(s)
# start from least significant position
for idx, c in enumerate(reversed(char_list)):
if not isCarryAfterPlusOne(c):
# no carry, + 1 and break
char_list[idx] = chr(ord(c) + 1)
break
else:
# carry, + 1 - 26
char_list[idx] = chr(ord(c) + 1 -26)
if idx is 0:
# still need carry at most significant position
char_list.insert(0, chr(ord(c) + 1 -26))
return ''.join(char_list)
def isCarryAfterPlusOne(c):
return c is 'z' or c is 'Z'

Links booklink

Contact Us: admin [ a t ] ucptt.com