列表

详情


2802. 找出第 K 个幸运数字

我们知道 47幸运 数字。同时,如果一个数字只包含幸运数字,那么它被称为幸运数字。

给定一个整数 k,返回第 k 个幸运数字,并将其表示为一个 字符串

 

示例 1:

输入:k = 4
输出:"47"
解释:第一个幸运数字是 4,第二个是 7,第三个是 44,第四个是 47。

示例 2:

输入:k = 10
输出:"477"
解释:按递增顺序列出的幸运数字为:
4, 7, 44, 47, 74, 77, 444, 447, 474, 477。 因此第10个幸运数字是477。

示例 3:

输入:k = 1000
输出:"777747447"
解释:第 1000 个幸运数字是 777747447。

 

提示:

原站题解

去查看

上次编辑到这里,代码来自缓存 点击恢复默认模板
class Solution { public: string kthLuckyNumber(int k) { } };

typescript 解法, 执行用时: 152 ms, 内存消耗: 49.8 MB, 提交时间: 2023-10-17 20:28:19

function kthLuckyNumber(k: number): string {
   const binaryStr = (k + 1).toString(2).slice(1);
   const luckyNumberStr = binaryStr.replace(/0/g, '4').replace(/1/g, '7');
  return luckyNumberStr;
};

java 解法, 执行用时: 7 ms, 内存消耗: 42.1 MB, 提交时间: 2023-10-17 20:27:23

class Solution {
    public String kthLuckyNumber(int k) {
        k++;
        StringBuilder ans = new StringBuilder();
        while(k > 1){
            if((k & 1) == 0){
                ans.append(4);
            }else{
                ans.append(7);
            }
            k >>= 1;
        }
        return ans.reverse().toString();
    }
}

python3 解法, 执行用时: 80 ms, 内存消耗: 16 MB, 提交时间: 2023-10-17 20:26:52

class Solution:
    def kthLuckyNumber1(self, k: int) -> str:
        return ''.join(['4' if c=='0' else '7' for c in bin(k+1)[3:]])
        
    
    def kthLuckyNumber(self, k: int) -> str:
        srt, sm, p = 1, 2, 4
        while k > sm:
            sm += p
            srt += 1
            p *= 2
        s = bin(k-1-sm+p//2)[2:].rjust(srt,"0")
        return s.replace("0","4").replace("1","7")

上一题