LeetCode 401 二进制手表

题目描述:

二进制手表顶部有 4 个 LED 代表 小时(0-11),底部的 6 个 LED 代表 分钟(0-59)。

每个 LED 代表一个 0 或 1,最低位在右侧。

LeetCode 401 二进制手表
例如,上面的二进制手表读取 “3:25”。

给定一个非负整数 n 代表当前 LED 亮着的数量,返回所有可能的时间。

示例:

输入: n = 1
返回: ["1:00", "2:00", "4:00", "8:00", "0:01", "0:02", "0:04", "0:08", "0:16", "0:32"]

题解1:

直接暴力 从0:00到11:59 直接判断小时位出现的1个数和分秒位出现的1个数的和是否等于num。

class Solution {
public:
    vector<string> readBinaryWatch(int num) {
        vector<string> result;
        string s="";
       for(int i=0;i<12;i++)
            for(int j=0;j<60;j++)
                if(count1(i)+count1(j)==num)
                    if(j<10)
                        result.push_back(s+to_string(i)+":0"+to_string(j));
                    else 
                        result.push_back(s+to_string(i)+":"+to_string(j));
        return result;
    }
    int count1(int num)//求一个整数的二进制中1的个数
    {
	    int countt = 0;
	    while (num != 0)
	    {
		    num = num & (num - 1);
		    countt++;
	    }
	    return countt;
    }
};
上一篇:【DB笔试面试401】​在非归档方式下操作的数据库禁用了()


下一篇:.Net利用core实现简单的加解密例程全解析