题解 | #牛牛与二进制#

牛牛与二进制

http://www.nowcoder.com/practice/2bdc26bc9a2641e5992f841547eb3968

题解一:递归模拟
主要思路:
①利用一个string对象,初始化为"00000000";
②对n转二进制,转出来的值从string对象的尾部往前赋值
③返回string对象
复杂度分析:
时间复杂度:,递归八次,常数时间
空间复杂度:,一个8字节的string,常数空间
实现如下:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 给定一个数n,返回将这个数转化为八位的二进制数(不足八位,往前补0)。
     * @param n int整型 代表题目中的n
     * @return string字符串
     */
    void f(int n, string &res,int i) {
        if (!n)return;
        res[i]=n%2+'0';//从后往前赋值
        f(n / 2,res,i-1);
    }

string tranBinary(int n) {
    // write code here
    string res="00000000";//保证有前缀0
    f(n, res,7);//递归转二进制
    return res;//返回结果
}
};

题解二:使用bitset**
主要思路:
①将n存入长度为8的bitset对象
②使用to_string转成函数返回值返回
复杂度分析:
时间复杂度:,库实现,原理同题解一常数时间
空间复杂度:,一个长度为8的bitset,常数空间
实现如下:

class Solution {
public:
    /**
     * 代码中的类名、方法名、参数名已经指定,请勿修改,直接返回方法规定的值即可
     *
     * 给定一个数n,返回将这个数转化为八位的二进制数(不足八位,往前补0)。
     * @param n int整型 代表题目中的n
     * @return string字符串
     */
string tranBinary(int n) {
    // write code here
    bitset<8> str(n);
    return str.to_string();//返回结果
}
};
牛客网编程题题解 文章被收录于专栏

本专栏记录在牛客网上AC的每一题,写下题解。 未来2年完成2000编程题的题解。 2021.12.29更新,最进准备毕设,断更了,会尽快做完毕设,继续做这一件事情

全部评论

相关推荐

点赞 评论 收藏
分享
评论
1
收藏
分享
牛客网
牛客企业服务