504. Base 7(C++)

题目:

Given an integer, return its base 7 string representation.
Example 1:
Input: 100
Output: “202”

Example 2:

Input: -7
Output: “-10”

Note: The input will be in range of [-1e7, 1e7].
给一个数,可正可负,把这个十进制数转换成7进制数

解答:

class Solution {
public:
    string convertToBase7(int num) {
    if (num == 0)//首先排除0存在的情况
        return "0";
    int n = abs(num);//减少运算量,先忽视负号
    string s = "";
    while (n > 0)
    {
        s = to_string(n % 7)+s;
        n/=7;
    }
    if (num < 0)
        s = "-" + s;
    return s;
    }
};

改了几种书写方式以减少代码量,但看起来都不够直观,就这个吧

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
可以使用C++的标准库中的base64解码函数进行反编码,具体实现如下: ```c++ #include <iostream> #include <string> #include <vector> #include <algorithm> #include <iterator> #include <cstring> #include <cstdlib> #include <cstdio> static const std::string base64_chars = "ABCDEFGHIJKLMNOPQRSTUVWXYZ" "abcdefghijklmnopqrstuvwxyz" "0123456789+/"; static inline bool is_base64(unsigned char c) { return (isalnum(c) || (c == '+') || (c == '/')); } std::string base64_decode(const std::string& encoded_string) { size_t in_len = encoded_string.size(); size_t i = 0; size_t j = 0; int in_ = 0; unsigned char char_array_4[4], char_array_3[3]; std::string ret; while (in_len-- && ( encoded_string[in_] != '=') && is_base64(encoded_string[in_])) { char_array_4[i++] = encoded_string[in_]; in_++; if (i ==4) { for (i = 0; i <4; i++) char_array_4[i] = base64_chars.find(char_array_4[i]); char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0x0f) << 4) + ((char_array_4[2] & 0x3c) >> 2); char_array_3[2] = ((char_array_4[2] & 0x03) << 6) + char_array_4[3]; for (i = 0; (i < 3); i++) ret += char_array_3[i]; i = 0; } } if (i) { for (j = i; j <4; j++) char_array_4[j] = 0; for (j = 0; j <4; j++) char_array_4[j] = base64_chars.find(char_array_4[j]); char_array_3[0] = (char_array_4[0] << 2) + ((char_array_4[1] & 0x30) >> 4); char_array_3[1] = ((char_array_4[1] & 0x0f) << 4) + ((char_array_4[2] & 0x3c) >> 2); char_array_3[2] = ((char_array_4[2] & 0x03) << 6) + char_array_4[3]; for (j = 0; (j < i - 1); j++) ret += char_array_3[j]; } return ret; } int main() { std::string encoded_str = "aGVsbG8gd29ybGQh"; std::string decoded_str = base64_decode(encoded_str); std::cout << "Encoded string: " << encoded_str << std::endl; std::cout << "Decoded string: " << decoded_str << std::endl; return 0; } ``` 在这个例子中,我们使用了base64解码函数`base64_decode`来对编码后的字符串进行反编码。具体实现过程如下: 1. 首先定义了一个字符集字符串`base64_chars`,用来对解码后的数据进行映射。 2. 然后定义了一个判断字符是否为base64字符的函数`is_base64`。 3. 接着定义了一个`base64_decode`函数,用于对编码后的字符串进行反编码。具体实现过程如下: 1. 首先遍历输入的编码字符串,将其转换为4个字符的char数组。 2. 然后将这个char数组转换为base64字符集中的索引值。 3. 接着将这个索引值进行位运算,还原出原始的3个字节数据。 4. 最后将还原出的3个字节数据组成字符串,并添加到结果字符串中。 4. 在`main`函数中,我们测试了一个编码后的字符串,并输出其解码后的结果。 注意:以上代码仅为示例,实际应用中还需要进行错误处理、内存管理等等。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值