Codewars第四天--Two to One

41 篇文章 1 订阅

Codewars第四天–Two to One

题目描述:
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()可以创建一个无序不重复元素集,这样就起到了去重作用。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值