本文共 889 字,大约阅读时间需要 2 分钟。
题目描述:
Take 2 strings s1 and s2 including only letters from ato z. Return a new sorted string, the longest possible, containing distinct letters, each taken only once - coming from s1 or s2. #Examples: a = "xyaabbbccccdefww" b = "xxxxyyyyabklmopq" longest(a, b) -> "abcdefklmopqwxy" a = "abcdefghijklmnopqrstuvwxyz" longest(a, a) -> "abcdefghijklmnopqrstuvwxyz"
想的思路是将字符串合并为一个,然后依次判断加入到一个新的列表中,然后得到没有重复字符的列表,对其排序转换输出即可。代码如下:
def longest(s1, s2): # your code z = s1 + s2 result = [] for i in z: if i not in result: result.append(i) result.sort() return "".join(result)
*遇到的问题,在使用"".join()
将列表转换为字符串的过程中,开始使用了"".join(result.soirt())
语句,出现了类型错误:
TypeError: can only join an iterable
原因是join里面不能出现函数,需要单独提出了排序后,再使用join进行操作。
最佳做法:
def longest(a1, a2): return "".join(sorted(set(a1 + a2)))
使用sorted进行排序,set()可以创建一个无序不重复元素集,这样就起到了去重作用。
转载地址:http://mmmws.baihongyu.com/