class Solution {
public:
string encode(int num) {
}
};
1256. 加密数字
给你一个非负整数 num
,返回它的「加密字符串」。
加密的过程是把一个整数用某个未知函数进行转化,你需要从下表推测出该转化函数:
示例 1:
输入:num = 23 输出:"1000"
示例 2:
输入:num = 107 输出:"101100"
提示:
0 <= num <= 10^9
相似题目
原站题解
golang 解法, 执行用时: 0 ms, 内存消耗: 1.8 MB, 提交时间: 2023-10-21 19:57:42
func encode1(num int) string { return fmt.Sprintf("%b", num+1)[1:] } func encode(num int) string { if num == 0 { return "" } v := 1 n := 0 for num >= v { num -= v v <<= 1 n++ } str := strconv.FormatInt(int64(num), 2) return strings.Repeat("0", n - len(str)) + str }
cpp 解法, 执行用时: 4 ms, 内存消耗: 6.6 MB, 提交时间: 2023-10-21 19:56:58
class Solution { public: string check(int num){ string res=""; while(num>0){ if(num&1){ res="1"+res; } else{ res="0"+res; } num>>=1; } return res; } string encode(int num) { string str=check(num+1); string temp=str.substr(1); return temp; } string encode2(int num) { int n = num + 1; string res = ""; while (n != 1) { //最高位的1不要 int x = n & 1; res += ('0' + x); n >>= 1; } reverse(res.begin(), res.end()); return res; } };
python3 解法, 执行用时: 44 ms, 内存消耗: 16 MB, 提交时间: 2023-10-21 19:56:08
class Solution: def encode(self, num: int) -> str: return bin(num+1)[3:]
java 解法, 执行用时: 0 ms, 内存消耗: 38.5 MB, 提交时间: 2023-10-21 19:55:45
class Solution { public String encode(int num) { return Integer.toBinaryString(num + 1).substring(1); } public String encode2(int num) { if (num == 0 ){ return ""; } String input = Integer.toBinaryString(num); StringBuilder allone = new StringBuilder(); allone.append("1".repeat(input.length())); // 1, 11, 111,... StringBuilder ans = new StringBuilder(); if (allone.toString().equals(input)) { return ans.append("0".repeat(input.length())).toString(); } //minus String a = allone.substring(1); Integer allOneInt = Integer.valueOf(a, 2); String y = Integer.toBinaryString(num - allOneInt); // 01, 001, 010.... return "0".repeat(Math.max(0, input.length() - y.length() - 1)) + y; } }