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