首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

【Leetcode -680.验证回文串Ⅱ -693.交替二进制

return true; } Leetcode -693.交替二进制 题目:给定一个正整数,检查它二进制表示是否总是 0、1 交替出现:换句话说,就是二进制表示中相邻两数字永不相同...示例 1: 输入:n = 5 输出:true 解释:5 二进制表示是:101 示例 2: 输入:n = 7 输出:false 解释:7 二进制表示是:111....提示: 1 <= n <= 2^31 - 1 思路是判断这个数 n 相邻两个二进制位数在 n 不等于0情况是否相同,相同则说明 0 和 1 不是交替,就返回false;否则返回 true;...bool hasAlternatingBits(int n) { //整型是32比特,我们遍历这32比特 int a = 32; while (a--)...= 0) { return false; } //否则,n 二进制向右移动一 else

10510
您找到你想要的搜索结果了吗?
是的
没有找到

宏定义实现二进制奇偶交换

思路分析 通过宏定义来实现二进制奇偶交换,如果一个个遍历交换的话,那得算到猴年马月,这是我在网上看到一个思路: 我们将每一(整数在计算机里存储是4字节,32二进制奇数位保留,偶数位置为...0,并向右移一,这样就实现奇数位换到偶数位。...同样道理,再将偶数位保留,奇数位置为0,并左移一实现偶数位到奇数位交换。 最后将得到两个数加起来,神奇事情出现了:完成了交换(作者本人实现时震惊了一下,太巧妙了)。...步骤解析 1.将奇数位保留,可以利用与思想(同1为1,有0为0),将奇数位每一与1就保留了奇数位值,与值奇数位为1,偶数为置为0,0101(5),需要32,转换为16进制就是0x55555555...再右移一完成交换 3.最后再相加起来,就是我们需要值。

10710

【Leetcode-190.颠倒二进制 -191.1个数 -202.快乐

Leetcode-190.颠倒二进制 题目:颠倒给定 32 无符号整数二进制。...= 0; //先将n按与1,得到n二进制这一 //再将这一向左移动 //最后用ret按或上这一,就得到这一,相当于存到了ret中...个数 题目:编写一个函数,输入是一个无符号整数(以二进制形式), 返回其二进制表达式中数字位数为 ‘1’ 个数(也被称为汉明重量)。...「快乐」 定义为: 对于一个正整数,每一次将该替换为它每个位置上数字平方和。 然后重复这个过程直到这个数变为 1,也可能是 无限循环 但始终变不到 1。...我们思路是,先定义一个哈希表,一会用来存放每一次平方和数据,存放位置就是以这个平方和为下标的位置,这样做好处是为了判断这个数是否已经出现过,即判断是否已经进入死循环; bool isHappy

7210

二进制运算方法

大家好,又见面了,我是你们朋友全栈君。 1.二进制算术运算 二进制算术运算包括:加、减、乘、除四则运算,下面分别予以介绍。...1011过程如下: (3)二进制乘法 二进制乘法过程可仿照十进制乘法进行。...二进制乘法法则为: 0×0=0 0×1=1×0=0 1×1=1 例如:1001和1010相乘过程如下: 由低位到高位,用乘数每一去乘被乘数,若乘数某一为1,则该次部分积为被乘数...;若乘数某一为0,则该次部分积为0。...某次部分积最低位必须和本位乘数对齐,所有部分积相加结果则为相乘得到乘积。 (4)二进制除法 二进制除法与十进制除法很类似。

1.2K10

二进制反码和补码

(第十版)》,中英文结合) 首先从最一般意义上,分别说一下二进制反码和补码: 1、反码 (1’s complement) 把所有的0变为1,所有的1变为0。...3、带符号数 Signed Number 3.1 符号 The Sign Bit 带符号二进制最左边那一就是符号,指出这个数为正数还是负数,0表示正数,1表示负数。...其实也就是一般带符号数形式,数值对于正数和负数来说都是二进制源码(in true (uncomplemented) binary)。...如十进制 +25 使用符号数值形式表示成8带符号二进制为: 十进制 -25 表示为: 他们之间唯一区别就是符号不同。...举例:在补码表示形式中, 十进制 25 表示为: 00011001 十进制 -25 表示为: 11100111 3.5 总结 对于带符号数, 正数反码和补码与原码相同; 负数反码等于相应正数反码

1.6K30

1758.生成交替二进制字符串最少操作数

交替字符串 定义为:如果字符串中不存在相邻两个字符相等情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。...返回使 s 变成 交替字符串 所需 最少 操作数。...示例 2: **输入:** s = "10" **输出:** 0 **解释:** s 已经是交替字符串。...以1开头,如:101010 / 10101 以0开头,如:010101 / 01010 得到其中一种计数后,用字符串长度减去当前计数后就是另一种计数,在这2个计数值里取最小值即可。...我们发现每个字符所在key % 2后就是 0/1/0/1 这样规律。 那么我们只需要一次遍历字符s,看每个字符和它所在key%2 是否相等,如果不相当则需要改变一次。这样计算出以0开头计数。

15820

Java二进制操作整理 顶

最高位为1表示负数 原码 将一个数字转换成二进制就是这个数值原码。...>> 右移运算符 规则 a >> b 将数值 a 二进制数值从 0 算起到第 b - 1 ,整体向右方向移动 b ,符号不变,正数高位空出来补数值 0,负数补1。...0 给一个第K设置为1 对于一个给定操作数n,设置其第k为1,可以用 n | (1 << k - 1) 比如我要设置965第4为1 public class Code { public...0为第2 检查某个数是否是2幂 给定一个n,检查其是否满足2 ^ n(2n次方)形式,可以使用表达式 if (n & n - 1 == 0) 我们使用968来测试一下 public class...1计数 统计值1计数方法有很多种,这里主要讲2种 1、按位处理 比如计算998二进制中有多少个1 public class Location { public static void

74130

生成交替二进制字符串最少操作数(DP)

题目 给你一个仅由字符 ‘0’ 和 ‘1’ 组成字符串 s 。 一步操作中,你可以将任一 ‘0’ 变成 ‘1’ ,或者将 ‘1’ 变成 ‘0’ 。...交替字符串 定义为:如果字符串中不存在相邻两个字符相等情况,那么该字符串就是交替字符串。 例如,字符串 “010” 是交替字符串,而字符串 “0100” 不是。...返回使 s 变成 交替字符串 所需 最少 操作数。 示例 1: 输入:s = "0100" 输出:1 解释:如果将最后一个字符变为 '1' ,s 就变成 "0101" ,即符合交替字符串定义。...示例 2: 输入:s = "10" 输出:0 解释:s 已经是交替字符串。 示例 3: 输入:s = "1111" 输出:2 解释:需要 2 步操作得到 "0101" 或 "1010" 。...解题 分别考虑每个位置是 1,或者 0 时候最小操作次数,动态规划思想 class Solution { public: int minOperations(string s) {

23430

生成交替二进制字符串最少操作数

题目 给你一个仅由字符 '0' 和 '1' 组成字符串 s 。一步操作中,你可以将任一 '0' 变成 '1' ,或者将 '1' 变成 '0' 。...交替字符串 定义为:如果字符串中不存在相邻两个字符相等情况,那么该字符串就是交替字符串。例如,字符串 "010" 是交替字符串,而字符串 "0100" 不是。...返回使 s 变成 交替字符串 所需 最少 操作数。 示例 1: 输入:s = "0100" 输出:1 解释:如果将最后一个字符变为 '1' ,s 就变成 "0101" ,即符合交替字符串定义。...示例 2: 输入:s = "10" 输出:0 解释:s 已经是交替字符串。 示例 3: 输入:s = "1111" 输出:2 解释:需要 2 步操作得到 "0101" 或 "1010" 。...思路 1.偶数位为0,奇数位为1 这种情况下,任意值和索引奇偶性相同,即s[i] % 2 == i % 2,若不满足,即需要变动该位,则计数num++ 2.偶数位为1,奇数位为0 这种情况下,任意值和索引奇偶性不同

30310

十进制负三二进制补码为_-8补码

十进制转二进制补码(正负都可) 指针初学 将一个十进制正(负)整数转换为对应二进制补码(用指针完成 十进制转二进制:1.先判断该整数是正数还是负数 如果是正数则二进制补码首位为1 , 且对应二进制补码就是原...< 0)//负数转正 如果为负数 二进制第一为1 正数则为0 { *p = 1; x = -x; } else if (x > 0) *p = 0; //判断正负 改首位 //------...(p + i) = 0; else *(p + i) = 1; } } if (*p == 1)//负数 { if (*(p+31) == 0) *(p + 31) = 1;//最后一为...0 则直接加1 else if (*(p + 31) == 1) //最后一为1 进位 { for (i = 1; i <= 31; i++) { if (*(p + 31) +...如发现本站有涉嫌侵权/违法违规内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

64810

从根到叶二进制之和

从根到叶二进制之和 难度简单212 给出一棵二叉树,其上每个结点值都是 0 或 1 。每一条从根到叶路径都代表一个从最高有效开始二进制。...例如,如果路径为 0 -> 1 -> 1 -> 0 -> 1,那么它表示二进制 01101,也就是 13 。 对树上每一片叶子,我们都要找出从根到该叶子路径所表示数字。 返回这些数字之和。...题目数据保证答案是一个 32 整数。...因为需要统计总和,所以定义了一个全局变量 sum ,以及考虑到递归到左右子树也需要将目前路径和传过去,所以新建一个子函数负责完成递归,设置参数为 root 和 val,val 表示在遇到当前节点前所有路径之和...空间复杂度:O(N),递归使用栈空间。

19230

运算(运算技巧、二进制中1个数、区间或、异或森林)

一、移位操作符 1.1   左移操作符  << 作用:二进制向左边移动,右边补0....%d", a, b); return 0; } 左移操作符相当于对原进行乘以2幂次方操作 对于整数5(二进制表示为00000101),执行左移三操作,相当于执行 5 * ( )。...右移相当于对原进行除以2幂次方操作 例如,对于整数13(二进制表示为00001101),执行左移2操作,相当于执行13/4向下取整。...~    按取反:将一个二进制0取1,1取0,之后再加一。...0 说明是偶数 1.4 获取二进制某一 x >> i & 1; // 结果必然为0或1, 表示 x 二进制表示中第i 1.5修改二进制某一 x | (1 << i) //

23910
领券