Javascript 如何根据指定的排序查找词典字符串
考虑所有长度为6的字符串,这些字符串由大写拉丁字母(A-Z)组成,按字典顺序排序。字符串AAAAA是第一个。字符串AAAZ是第26个。第27个是AAAABA。这个问题的提示是第N个字符串,其中N是小于2^30的素数− MM是123456789的一个置换,我们不会告诉您它是哪一个,但我们会给您以下约束,以减少可能的空间:Javascript 如何根据指定的排序查找词典字符串,javascript,logic,Javascript,Logic,考虑所有长度为6的字符串,这些字符串由大写拉丁字母(A-Z)组成,按字典顺序排序。字符串AAAAA是第一个。字符串AAAZ是第26个。第27个是AAAABA。这个问题的提示是第N个字符串,其中N是小于2^30的素数− MM是123456789的一个置换,我们不会告诉您它是哪一个,但我们会给您以下约束,以减少可能的空间: M可被567整除 M以2开头,以4结尾,中间数字是8 我设法找到了M和n,但我无法找到一个解决方案,如何根据排名找到正确的字符串。请注意,我在排名(第n)中发现了9种可能性,它们
- 43973488
- 43929860
- 41992802
- 41914646
- 41831591
- 41232030
- 41066565
- 40861259
- 40167328
谢谢您的帮助。您需要将数字转换为以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));
你想找到所有9个可能的字符串吗?是的,我应该找到所有9个可能的字符串。@EhsanNazeri谢谢你,伙计:)不客气。