返回介绍

solution / 1200-1299 / 1256.Encode Number / README

发布于 2024-06-17 01:03:21 字数 1901 浏览 0 评论 0 收藏 0

1256. 加密数字

English Version

题目描述

给你一个非负整数 num ,返回它的「加密字符串」。

加密的过程是把一个整数用某个未知函数进行转化,你需要从下表推测出该转化函数:

 

示例 1:

输入:num = 23
输出:"1000"

示例 2:

输入:num = 107
输出:"101100"

 

提示:

  • 0 <= num <= 10^9

解法

方法一:位运算

我们将 $num$ 加一,然后将其转换为二进制字符串,去掉最高位的 $1$ 即可。

时间复杂度 $O(\log n)$,空间复杂度 $O(\log n)$。其中 $n$ 为 $num$ 的大小。

class Solution:
  def encode(self, num: int) -> str:
    return bin(num + 1)[3:]
class Solution {
  public String encode(int num) {
    return Integer.toBinaryString(num + 1).substring(1);
  }
}
class Solution {
public:
  string encode(int num) {
    bitset<32> bs(++num);
    string ans = bs.to_string();
    int i = 0;
    while (ans[i] == '0') {
      ++i;
    }
    return ans.substr(i + 1);
  }
};
func encode(num int) string {
  num++
  s := strconv.FormatInt(int64(num), 2)
  return s[1:]
}
function encode(num: number): string {
  ++num;
  let s = num.toString(2);
  return s.slice(1);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文