Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/437.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何根据指定的排序查找词典字符串_Javascript_Logic - Fatal编程技术网

Javascript 如何根据指定的排序查找词典字符串

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种可能性,它们

考虑所有长度为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谢谢你,伙计:)不客气。