gpt4 book ai didi

javascript - 在具有重复项的所有可能排列列表中查找给定字符串的排名

转载 作者:塔克拉玛干 更新时间:2023-11-03 04:47:55 30 4
gpt4 key购买 nike

我试图在排列列表中找到给定字符串的排名,并希望有人能找到这个错误。

function permute() {
var W = $('input').val(),
C = [];
for (var i = 0; i < 26; i++) C[i] = 0;
var rank = 1;
for (var i = 0; i < W.length; i++) {
C[W.charCodeAt(i) - 'a'.charCodeAt(0)]++;
}
var repeated= 1;
for (var i = 0; i < C.length; i++) {
if(C[i] > 0) {
repeated *= fact(C[i]);
}
}

if (W !== '') {
for (var i = 0; i < W.length; i++) {
//How many characters which are not used, that come before current character
var count = 0;
for (var j = 0; j < 26; j++) {
if (j == (W.charCodeAt(i) - 'a'.charCodeAt(0))) break;
if (C[j] > 0) count++;
}
C[W.charCodeAt(i) - 'a'.charCodeAt(0)] = 0;
rank += ( count * fact(W.length - i - 1) );
}
rank = rank/ repeated;
}
var pp = 'Rank of :: ' + W + ' -- ' + rank;
$('div').append('<p>' + pp + '</p>');
}

function fact(n) {
if (n == 0 || n == 1) return 1;
else return fact(n - 1) * n;
}

$('button').click(permute);

Check Fiddle

一个用例可能是

bookkeeper 应该给出 10743 的排名。

最佳答案

这是 demo :

对于每个位置,检查剩下多少字符有重复项,并使用以下逻辑:如果您需要排列 n 个事物并且如果“a”事物相似,则排列数为 n!/a!

关于javascript - 在具有重复项的所有可能排列列表中查找给定字符串的排名,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17620694/

30 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com