交替位二进制数

给定一个正整数,检查他是否为交替位二进制数:换句话说,就是他的二进制数相邻的两个位数永不相等。

示例 1:

输入: 5
输出: True
解释:
5的二进制数是: 101
示例 2:

输入: 7
输出: False
解释:
7的二进制数是: 111
示例 3:

输入: 11
输出: False
解释:
11的二进制数是: 1011
 示例 4:

输入: 10
输出: True
解释:
10的二进制数是: 1010

参考代码:

class Solution:

def hasAlternatingBits(self, n):

list1 = []

list2 = []

if n == 1:  # 1比较特殊,单独拿出来分析

return True

a = bin(n).replace("0b","")  # 用bin函数把整数转换成二进制数然后把二进制数前的0b用replace函数去掉

for i in range(0,len(a),2): # 把偶下标数单独提取出来放在list1中

list1.append(a[i])

for b in range(1,len(a),2): # 把奇下标数数单独提取出来放在list1中

list2.append(a[b])

if set(list1) == {‘1‘} and set(list2) == {‘0‘}: # 判断两个列表是否各自内容相同

return True

else:

return False

原文地址:https://www.cnblogs.com/HackerEarl/p/12305938.html

时间: 2024-10-22 17:29:05

交替位二进制数的相关文章

汇编一点点提高3——键盘输入8位二进制数,存入NUM单元,并在屏幕上显示对应的16进制数

此程序要注意一下几点: 1.dos1号功能--带回显的键盘输入,自动存入al 2.dos7号功能--不带回显的键盘输入,自动存入al,若要在屏幕中显示要调用DOS2号功能 3.将输入的多个二进制数转换为ASCII码 input:  mov ah,1  int 21h  add bl,bl  cmp al,'1'  jnz P1  inc bl  P1: dec ch  jnz input 4.换行子程序: newline: mov ah,2 mov dl,13 int 21h mov ah,2

[软考]8位二进制数,可以代表.

计算机内部的8位二进制数码,可以以不同的形式,代表各种数字... ――――――――――――――――――――――――――――――――――――――――――― 二进制数码 | 无符号数 原码 反码 补码 移码―――――――――――+――――――――――――――――――――――――――――――― 0000 0000 | 0 +0 +0 0 -128 0000 0001 | 1 +1 +1 +1 -127 0000 0010 | 2 +2 +2 +2 -126 …… …… | …… …… …… …… ……

Number of 1 Bits (求32位二进制数中1的)

<span style="font-size:24px;"> </span> 1.题目: Write a function that takes an unsigned integer and returns the number of '1' bits it has (also known as the Hamming weight). For example, the 32-bit integer '11' has binary representation

为什么8位二进制数的范围是-128~127

1.计算机对带符号数的表示有三种方法:原码.反码和补码    8位原码和反码能够表示数的范围是-127~127    8位补码能够表示数的范围是 -128~127    所以既然范围是-128~127,那肯定是用补码表示的. 10000000-11111111表示-128到-1,  00000000-01111111表示0-127 补码的1111 1111转换成原码就是1000 0001,也就是-1. 在补码中用(-128)代替了(-0),所以补码的表示范围为: 注意:(-128)没有相对应的原

将float类型中的32位二进制数用union表示出来

用十六进制表示出来的代码,考虑到联合体的一些特性.计算机组成原理中反码补码原码的特性浮点数表示的IEEE754标准.对于32位,S(符号位(1)),E(阶码位(8)),M(尾数(23)).对于64位,S(符号位(1)),E(阶码位11)),M(尾数(52)).计算方法,符号位,0正1负.阶码位,计算出值减去127为真正的阶码(小数点在数据中的位置).尾数不操作.如:0 10000010 10010000000000000000000,step1.0->整数step2.10000010 ,算得为1

leet

# 题名1 两数之和    2 两数相加    3 无重复字符的最长子串    4 寻找两个有序数组的中位数    5 最长回文子串    6 Z 字形变换    7 整数反转    8 字符串转换整数 (atoi)    9 回文数    10 正则表达式匹配    11 盛最多水的容器    12 整数转罗马数字    13 罗马数字转整数    14 最长公共前缀    15 三数之和    16 最接近的三数之和    17 电话号码的字母组合    18 四数之和    19 删除链表

Leetcode简单题61~80

61.思路:bin# 编写一个函数,输入是一个无符号整数,返回其二进制表达式中数字位数为 ‘1’ 的个数(也被称为汉明重量).# 示例 1:# 输入:00000000000000000000000000001011# 输出:3# 解释:输入的二进制串 00000000000000000000000000001011 中,共有三位为 '1'.# 示例 2:# 输入:00000000000000000000000010000000# 输出:1# 解释:输入的二进制串 0000000000000000

POJ 1166 The Clocks 位运算与BFS

1.题意:有一组3*3的只有时针的挂钟阵列,每个时钟只有0,3,6,9三种状态:对时针阵列有9种操作,每种操作只对特点的几个时钟拨一次针,即将时针顺时针波动90度,现在试求从初试状态到阵列全部指向0的状态所需要的最小操作数的操作方案: 2.输入输出:输入给出阵列初始状态,0,1,2,3分别表示0,3,6,9:要求输出最快方案的操作序列: 3.分析:IOI 1994的考题,BFS是比较容易想到的方法之一,关键是如何简洁的表示和改变BFS过程中的阵列状态:这里使用位运算的方法:具体如下: 首先一共9

位/字节/ASCII/UTF-8/GBK/GB2312/Unicode 扫盲

1个字节(Byte)=8位 bit  1位就是计算机中的 1 或0 比如10进制1 ,ASCII码是49,二机制是: 00110001 它占用一个字节. ASCII码:一个英文字母(不分大小写)占一个字节的空间,一个中文汉字占两个字节的空间.一个二进制数字序列,在计算机中作为一个数字单元,一般为8位二进制数,换算为十进制.最小值0,最大值255.如一个ASCII码就是一个字节. UTF-8编码:一个英文字符等于一个字节,一个中文(含繁体)等于三个字节. Unicode编码:Unicode是一种编