如何使字符串成为排列?

时间:2015-02-05 00:47:30

标签: python string python-3.x

所以我给出的赋值是创建一个函数,它将x作为参数,根据(我假设的)输入字母的序数值来分配数字。请记住,只能输入非重复的小写字母。

由于“a< b”和“a< c”,如果我要在此函数中输入字符串“abc”,则应返回“123”。如果我输入“zad”,则应返回“312”。换句话说,最小的字母从1开始,下一个最小,2,等等。

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

2 个答案:

答案 0 :(得分:2)

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

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'))

答案 1 :(得分:0)

str1 = "bca"
print (sorted([str1.index(x)+1 for x in sorted(str1)]))

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