LeetCode: 007-Excel Sheet Column Number
公历年末要到啦,可以休假啦 ~
计算Excel的列数 & 字符处理
实质上是26进制转换+字符串处理,了解ascii码这道题非常简单。
我的解法
尽管速度不快。。。确实该好好想想怎么样提高代码速度了。。。
class Solution(object):
def titleToNumber(self, s):
result = 0
for i in s:
result = result * 26 + (ord(i) - 64)
return result
还有慢速递归版本
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
if s == '':
return 0
else:
return self.titleToNumber(s[:-1]) * 26 + (ord(s[-1]) - 64)
写完之后突然想到一个快一点点的解法:
用了map 和reduce
class Solution(object):
def titleToNumber(self, s):
"""
:type s: str
:rtype: int
"""
return reduce( lambda i,j: i* 26 + j ,map( lambda k: ord(k) - 64, s))