字母字谜不适用于包含多次出现的字母的单词

Alphabatic Anagrams doesn't work with words that contains letters with multiple occurence

你好,你好吗?我有一个挑战 https://www.codewars.com/kata/53e57dada0cb0400ba000688/solutions/python,我坚持了 2 天,我创建了第一个解决方案,但它很慢(使用 itertools.permutations),然后我制作了这个代码块。

import math

def listPosition(word):
    n = 0
    wlsort = list(word)
    wlsort.sort()
    wcopy = word
    
    while wcopy:
        for i in range(wlsort.index(wcopy[0])):
            n += math.factorial(len(wlsort) - 1)
        wlsort.pop(wlsort.index(wcopy[0]))
        wcopy = wcopy[1:]
    return n + 1

但它不适用于 test bookkeeper 这样的词,您有任何提示或解决方法的想法吗?

我认为我的问题是,当我有一个像 car 这样的词时,它会像 -> acr, arc... 如果我有 caar 它会像 -> 一样暴力破解它 aacraarc 并且它不会 acar 因为它是按字母顺序暴力破解的。

这是我的尝试。这很简单,如果你阅读 req.小心。如果您有任何问题,请告诉我。

from math import factorial as fact 
def listPosition(word):
    count = 0
    while len(word):
        first = word[0]
        uniqs = set(word)
        possibles = fact(len(word))
        
        for ch in uniqs:
            possibles /= fact(word.count(ch))
            
        for ch in uniqs:
            if ch < first: 
                count += possibles/len(word) * word.count(ch)
        word = word[1:]
        
    return count + 1