Day 3: Rucksack Reorganization
Contents
第一部分
大意就是给出下面的字符串,每个字符串等分为 2 个部分 找出第一部分和第二部分 共有的字符
字符串样例:
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
- 第一个字符串 第一部分是
vJrwpWtwJgWr
,第二部分是hcsFMMfFFhFp
,共同出现字符是p
. - 第二个字符串 第一部分是
jqHRNqRjqzjGDLGL
,第二部分是rsFMfFZSrLrFZsSL
,共同出现字符是L
. - 第三个字符串 第一部分是
PmmdzqPrV
,第二部分是vPwwTWBwg
,共同出现字符是P
. - 第四个出现的字符是
v
- 第五个出现的字符是
t
- 第六个出现的字符是
s
字符类型可以转换为优先级(priority
)
- 小写字符
a
到z
优先级是 1 到 26 - 大写字符
A
到Z
优先级是 27 到 52
因此上述部分 16 (p
), 38 (L
), 42 (P
), 22 (v
), 20 (t
), and 19 (s
); 这些字符的总和是 157
第二部分
在第一部分的基础上做了部分修改 每三个字符串作为一个整体 找出这 3 个字符串的共有字符串
vJrwpWtwJgWrhcsFMMfFFhFp
jqHRNqRjqzjGDLGLrsFMfFZSrLrFZsSL
PmmdzqPrVvPwwTWBwg
第一部分里面在这 3 个字符里面都出现的字符是r
wMqvLMZHhHMvwLHjbvcjnnSBnvTQFn
ttgJtRGJQctTZtZT
CrZsJsPPZsGzwwsLwLmpwMDw
第二部分共同出现的字符是Z
因此这部分的优先级总和为 18 (r
) + 52 (Z
)= 70
解法
优先级转换
|
|
Part I
|
|
Part II
|
|
总结
这个问题主要是需要处理字符串以及字符串的交集,
当然我利用了 python 中的Set
的函数 intersection
来获取两个集合的交集来确定 共同出现的字符