蓝桥杯day03——二进制间距

1.题目

给定一个正整数 n,找到并返回 n 的二进制表示中两个 相邻 1 之间的 最长距离 。如果不存在两个相邻的 1,返回 0 。

如果只有 0 将两个 1 分隔开(可能不存在 0 ),则认为这两个 1 彼此 相邻 。两个 1 之间的距离是它们的二进制表示中位置的绝对差。例如,"1001" 中的两个 1 的距离为 3 。

示例 1:

输入:n = 22
输出:2
解释:22 的二进制是 "10110" 。
在 22 的二进制表示中,有三个 1,组成两对相邻的 1 。
第一对相邻的 1 中,两个 1 之间的距离为 2 。
第二对相邻的 1 中,两个 1 之间的距离为 1 。
答案取两个距离之中最大的,也就是 2 。

示例 2:

输入:n = 8
输出:0
解释:8 的二进制是 "1000" 。
在 8 的二进制表示中没有相邻的两个 1,所以返回 0 。

示例 3:

输入:n = 5
输出:2
解释:5 的二进制是 "101" 。

提示:

  • 1 <= n <= 109

 

2.解析

这个方法的作用是找到给定整数n的二进制表示中连续的"1"之间的最大间隔。如果整数只包含一个"1",则返回0;否则,返回最大间隔。

首先,将整数n转换为二进制字符串,然后使用切片[2:]去掉前两个字符('0b'),得到纯二进制字符串s
然后,初始化一个空列表ls,用于存储二进制表示中所有"1"的索引位置。

统计二进制字符串s中"1"的数量,如果数量小于等于1,则意味着在二进制表示中只有一个"1",因此返回0。
如果二进制字符串s中"1"的数量大于1,使用列表推导式找到二进制字符串s中所有"1"的索引位置,并将它们存储在列表ls中。
初始化变量max_d为0,用于存储最大间隔。遍历列表ls中的所有元素,计算当前元素和下一个元素之间的间隔,并存储在变量d中。如果当前间隔d大于之前的最大间隔max_d,则更新max_d为当前间隔。否则,保持不变。
最后,返回最大间隔作为结果。

 

3.python代码

class Solution:def binaryGap(self, n: int) -> int:s=bin(n)[2:]ls=[]if s.count("1")<=1:return 0else:ls=[i for i in range(len(s)) if s[i]=="1"]max_d=0for i in range(len(ls)-1):d=ls[i + 1] - ls[i]max_d=d if d>max_d else max_dreturn max_d

 

4.运行结果

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/238298.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

第十节HarmonyOS 常用基础组件-Image

一、组件介绍 组件&#xff08;Component&#xff09;是界面搭建与显示的最小单位&#xff0c;HarmonyOS ArkUI声名式为开发者提供了丰富多样的UI组件&#xff0c;我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。 组件根据功能可以分为以下五大类&#xff1a;基础组件…

【Android】MotionLayout实现动画

MotionLayout不断地更新&#xff0c;文章并不适用全部最近的更新内容。 文章目录 引入 ConstraintSetTransitionManager和MotionLayout有什么区别&#xff1f; 使用ConstrainSet(属性类似于ConstrainLayout) Transition属性OnClickOnSwipeKeyFrameSetKeyPositionKeyAttribute C…

Java零基础——vue篇

1.【熟悉】Vue简介 1.1 简介 它是一个构建用户界面的框架 Vue是一个前端框架 js jq https://www.pmdaniu.com/#file UI网站 UI 一般开发者使用蓝湖 工具 看着UI图 写接口 https://lanhuapp.com/web/#/item 是一个轻量级的MVVM&#xff08;Model-View-ViewModel&#xff0…

力扣15题 三数之和 双指针算法

15. 三数之和 给你一个整数数组 nums &#xff0c;判断是否存在三元组 [nums[i], nums[j], nums[k]] 满足 i ! j、i ! k 且 j ! k &#xff0c;同时还满足 nums[i] nums[j] nums[k] 0 。请 你返回所有和为 0 且不重复的三元组。 注意&#xff1a;答案中不可以包含重复的三…

Flask 构建高效的 Python Web 应用详解

概要 Flask 是一个用 Python 编写的轻量级 Web 应用框架。它的设计哲学是“简单优雅”&#xff0c;但它的灵活性和可扩展性使其成为构建复杂应用的理想选择。本文旨在深入探讨 Flask 的架构和核心组件&#xff0c;通过详细的示例和实践指南&#xff0c;为开发者提供构建高效、…

rust持续学习 COW

COW我第一次看见还以为是奶牛 很奇怪是个啥 后来了解到是clone on write 缩写的&#xff0c;大乌龙啊 这个有两种enum,一种是borrow&#xff0c;一种是own rust中&#xff0c;数据读写经常涉及到所有权 这个borrow&#xff0c;很显然&#xff0c;就是不可变借用了 own就是可以写…

【渗透】记录阿里云CentOS被渗透攻击

文章目录 发现排查安装Nethogs查询情况 最终方案 发现 流量异常&#xff0c;出现大流量&#xff0c;网络贷带宽占满情况 排查 安装Nethogs 1.1 Nethogs介绍 NetHogs是一个开源的命令行工具&#xff08;类似于Linux的top命令&#xff09;&#xff0c;用来按进程或程序实时统…

MySQL 基础、进阶、运维的学习笔记

1. MySQL 基础篇 1.1 MySQL 概述 1.1.1 数据库相关概念 数据库(Database, 简称 DB): 存储数据的仓库&#xff0c;数据是有组织的进行存储。 数据库管理系统(Database Management System, 简称 DBMS): 操作和管理数据库的大型软件。 SQL(Structured Query Language, 简称 S…

linux 内核工作队列技术原理

首先介绍一下工作队列使用的术语。 work&#xff1a;工作&#xff0c;也称为工作项。work queue&#xff1a;工作队列&#xff0c;就是工作的集合&#xff0c; work queue 和 work 是一对多的关系。worker&#xff1a; 工人&#xff0c; 一个工人对应一个内核线程&#xff0c;…

在re:Invent上IBM宣布与亚马逊云科技携手,Amazon RDS for DB2正式亮相

11月29日&#xff0c;IBM在亚马逊云科技re:Invent 2023上宣布&#xff0c;与亚马逊云科技合作推出Amazon Relational Database Service&#xff08;Amazon RDS&#xff09;for Db2。这项全新的完全托管云服务旨在简化客户在混合云环境中管理人工智能&#xff08;AI&#xff09;…

AH8691是一款80V转3.3V降压芯片

80V转3.3V降压芯片AH8691&#xff1a;宽电压输入范围&#xff0c;高效稳定&#xff0c;多领域应用 在当今电源管理领域&#xff0c;高效、稳定的降压芯片已成为各类设备的关键需求。本文将为您介绍一款80V转3.3V降压芯片AH8691&#xff0c;其具备宽电压输入范围、迟滞控制、高…

wpf devexpress 使用IDataErrorInfo实现input验证

此处下载源码 当form初始化显示&#xff0c;Register按钮应该启动和没有输入错误应该显示。如果用户点击注册按钮在特定的输入无效数据&#xff0c;form将显示输入错误和禁用的注册按钮。实现逻辑在标准的IDataErrorInfo接口。请查阅IDataErrorInfo接口&#xff08;System.Com…