如何根据指定的排名查找字典字符串

how to find lexicographic string based on specified ranking

考虑所有由大写拉丁字母 (A - Z) 组成的长度为 6 的字符串,并按字典顺序排序。字符串 AAAAAA 是第一个。字符串 AAAAAZ 是第 26 个。第 27 个是 AAAABA。这个问题的线索是第 N 个字符串,其中 N 是小于 2^ 30 − M 的素数个数。 M 是 123456789 的排列,我们不会告诉你它是哪一个,但我们会给你以下约束来减少 space 的可能性:

  1. M能被567整除
  2. M以2开头,以4结尾,中间数字为8

我设法找到了 M 和第 N 个,但我无法找到如何根据排名找到正确字符串的解决方案。请注意,我在排名(第 N 个)上找到了 9 种可能性,它们是:

感谢您的帮助。

您需要将数字转换为 26 进制,并将每个数字与相关字符匹配

var chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"
function convertToBase26Strings(number) {
  number = number - 1 ;
  var res = ""
  while(number >= chars.length ) {
    var i = number % chars.length ;
    number = Math.floor(number / chars.length)
    res += chars[i];
  }
  res += chars[number];
  return res.split("").reverse().join("").padStart(6 , "A");
}
console.log(convertToBase26Strings(1));
console.log(convertToBase26Strings(26));
console.log(convertToBase26Strings(27));