【LeetCode竞赛题】1023. 子串能表示从 1 到 N 数字的二进制串(给定一个二进制字符串 S和一个正整数 N, 如果对于从 1 到 N 的每个整数 X,其二进制表示都是 S 的子串 )

给定二进制字符串S和正整数N,该文探讨如何判断S是否包含从1到N所有整数的二进制表示作为子串。通过分析和使用BigInteger的toString方法,将整数转换为二进制字符串进行比较。
摘要由CSDN通过智能技术生成

1023. 子串能表示从 1 到 N 数字的二进制串

给定一个二进制字符串 S(一个仅由若干 '0' 和 '1' 构成的字符串)和一个正整数 N,
如果对于从 1 到 N 的每个整数 X,其二进制表示都是 S 的子串,就返回 true,否则返回 false。

示例 1:
输入:S = "0110", N = 3
输出:true

示例 2:
输入:S = "0110", N = 4
输出:false

提示:
1 <= S.length <= 1000
1 <= N <= 10^9

分析:

表示出从1到N的正整数二进制字符串s,判断二进制字符串 S是否包含s,
不包含,返回false,若包含所有1到N的正整数二进制字符串,返回true。
这里用到BigInteger的toString方法,
BigInteger中的String toString()将当前整数转换成十进制的字符串形式,
转为二进制只需要传参为2。

代码:

import java.math.BigInteger;
public class LeetcodeTest {
	
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值