参考答案—字符串操作题目01

下面是上次题目的参考答案。希望大家自己做一做再看参考答案会更好。

题目1:

完成一个函数accum,输入为一个字符串,输出如下示例。

accum("abcd")    # "A-Bb-Ccc-Dddd"
accum("RqaEzty") # "R-Qq-Aaa-Eeee-Zzzzz-Tttttt-Yyyyyyy"
accum("cwAt")    # "C-Ww-Aaa-Tttt"

def accum(s):
    return '-'.join(c.upper() + c.lower() * i for i, c in enumerate(s))

enumerate用来遍历元素c和下标i。

题目2:

实现一个函数duplicate_count,对输入的字符串进行重复字符判断,如下例子所示

"abcde" -> 输出0 #
"aabbcde" -> 输出2 # 'a' and 'b'
"aabBcde" -> 输出2 # 'a' and 'b'
"indivisibility" -> 输出1 # 'i'
"Indivisibilities" -> 输出2 # 'i' and 's'
"aA11" -> 输出2 # 'a' and '1'
"ABBA" -> 输出2 # 'A' and 'B'

def duplicate_count(s):
  return len([c for c in set(s.lower()) if s.lower().count(c)>1])

set集合用来去重复。

题目3:

实现一个函数longest,对输入的两个字符串进行判断,按a-z顺序输出两个字符串中不重复的字母。例如:

a = "xyaabbbccccdefww" b = "xxxxyyyyabklmopq" longest(a, b) -> "abcdefklmopqwxy"
a = "abcdefghijklmnopqrstuvwxyz" longest(a, a) -> "abcdefghijklmnopqrstuvwxyz"

def longest(a1, a2):
    return "".join(sorted(set(a1 + a2)))

把时间用在思考上是最能节省时间的事情.

卡曾斯