有序字符数答案
1.1 菜鸡解法
from collections import OrderedDict
def ordered_count(input):
counts = OrderedDict()
for char in input:
counts[char] = counts.get(char, 0) + 1
return list(counts.items())
1.2 高手解法1
from collections import OrderedDict, Counter
class OrderedCounter(Counter, OrderedDict):
pass
def ordered_count(seq):
m=OrderedCounter(seq)
return list(OrderedCounter(seq).items())
1.3 高手解法2
from collections import Counter
def ordered_count(input):
return list(Counter(input).items())
1.4 点评
这道题因为要考虑有序,就是按照字符串里面的字符顺序,同时要统计字符出现的次数。高手解法1非常巧妙,里面两个类的继承,同时继承了collection 模块里面的OrderedDict和Counter两个子类。很秒!
缩写双字名称答案
2.1 高手解法1
def abbrevName(name):
return '.'.join(w[0] for w in name.split()).upper()
2.2 高手解法2
abbrevName = lambda name: ".".join(e[0].upper() for e in name.split())
2.3 点评
几种高手的解法都是利用列表推导列表进行快速处理,然后用字符串自带upper()函数进行全大写。建议要熟悉常用的内置函数,比如:
''.lower()
''.upper()
''.count()
''.startswith()
''.capitalize()
有问题欢迎在留言区交流。