【问题标题】:How to make string into permutation?如何将字符串变成排列?
【发布时间】:2015-02-05 00:47:29
【问题描述】:

所以我得到的任务是创建一个函数,它以 x 作为参数,根据(我假设的)输入字母的序数值分配数字。请记住,只能输入不重复的小写字母。

由于“a

我应该如何构建一个符合这个标准的函数?我想我会包含一个从 ord[a] 到 ord [z] 的范围,然后包含一个 elif 循环语句。有什么指点吗?

【问题讨论】:

    标签: python string python-3.x


    【解决方案1】:

    您可以构建一个字典,将每个字符映射到其在原始字符串中不同字符的排序列表中的位置:

    def perm(s):
        indexes = {x:i+1 for i,x in enumerate(sorted(set(s)))}
        return ''.join(str(indexes[x]) for x in s)
    
    print(perm('abc'))
    print(perm('zad'))
    

    【讨论】:

    • 您可以为enumerate 使用start 关键字参数来避免i+1enumerate(sorted(s), start=1)
    • 的意思是在我删除我的答案之前发表评论——我很愚蠢,误解了这个问题。你的答案很完美,干得好!
    • 没错,解释了为什么你这么快就忽略了我的回复。
    【解决方案2】:
    str1 = "bca"
    print (sorted([str1.index(x)+1 for x in sorted(str1)]))
    

    首先对它们进行排序并打印它们的排序索引。小心,+1 索引,因为索引从 0 开始。

    【讨论】:

    • 如果 str1 = "bbca" 怎么办?
    • str.index 很慢。一个更好的方法是像@JuanLopes 所做的那样使用enumerate
    • @JuanLopes 是的,我没有意识到这一点。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-01-05
    • 2011-01-13
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-01-13
    • 2022-09-29
    相关资源
    最近更新 更多