Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $YECBGYFECGEAFWHA as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2

Deprecated: imwpcache\f884414bce24ee67f\f73723ec7b1919fa5::__construct(): Implicitly marking parameter $BBWFDDBHHYHDXXAB as nullable is deprecated, the explicit nullable type must be used instead in /www/wwwroot/www.chuangxiangniao.com/wp-content/plugins/imwpcache-dist/build/f884414bce24ee67ff73723ec7b1919fa5.php on line 2
Javascript 程序检查两个数字是否是彼此的位循环_创想鸟

Javascript 程序检查两个数字是否是彼此的位循环

javascript 程序检查两个数字是否是彼此的位循环

问题陈述 – 我们给出了两个整数,需要检查这两个数字是否是彼此的位循环。

在 JavaScript 中,每个整数都是一个 32 位二进制数,表示 0 和 1。这里,我们需要检查是否旋转了第一个数字的 32 位字符串;我们可以在第一个数字总共 32 次旋转中获得或不获得第二个数字的 32 位字符串。

使用 ToString() 方法检查两个数字是否相互位循环

toString()方法用于将整数转换为32位二进制数字字符串。之后,我们可以在二进制字符串中添加前导零,使其长度为 32 位。接下来,我们可以将数字的二进制字符串与其自身连接起来,并检查第二个数字的二进制字符串是否作为合并字符串的子字符串存在。

语法

用户可以按照以下语法检查连接字符串后两个数字是否相互位循环。

立即学习“Java免费学习笔记(深入)”;

let num1BinaryDouble = num1Binary + num1Binary;let isBitRotation = num1BinaryDouble.includes(num2Binary)

算法

第 1 步 – 使用 toString() 方法并传递 2 作为其参数,将两个数字转换为二进制字符串。

第 2 步 – 接下来,我们需要将两个字符串的大小设置为 32 位。因此,请向两个二进制字符串添加前导零。

步骤 3 – 将 num1 的二进制字符串合并到自身。

步骤 4 – 检查合并后的字符串是否包含 num2 的二进制字符串。如果是,则意味着两个数字都是彼此的位循环。

示例 1

在下面的示例中,checkBitRotations() 函数实现了上述算法,以确保两个数字是否是彼此的位循环。在输出中,用户可以观察到 1 和 2 是彼此的位循环,但 1 和 5 不是。

   

Checking if two numbers are bit rotations of each other or not in JavaScript

let output = document.getElementById("output"); let num1 = 1; let num2 = 2; let num3 = 5; function checkBitRotation(num1, num2) { let num1Binary = num1.toString(2); let num2Binary = num2.toString(2); // append remaining zeros at the start of num1BInary and num2Binary to make it's length 32 while (num1Binary.length < 32) { num1Binary = "0" + num1Binary; } while (num2Binary.length < 32) { num2Binary = "0" + num2Binary; } // double the string let num1BinaryDouble = num1Binary + num1Binary; // check if num2Binary is present in num1BinaryDouble if (num1BinaryDouble.includes(num2Binary)) { return true; } else { return false; } } output.innerHTML += "The " + num1 + " and " + num2 + " are bit rotations of each other " + checkBitRotation(num1, num2) + "
"; output.innerHTML += "The " + num1 + " and " + num3 + " are bit rotations of each other " + checkBitRotation(num1, num3) + "
";

使用 For 循环检查两个数字是否相互位循环

在这种方法中,我们将把数字转换为二进制字符串。之后,我们将使用 for 循环获取第一个数字的所有旋转,并将所有旋转与第二个数字进行比较。如果第一个数字的任何旋转与第二个数字匹配,则它们是彼此的位旋转。

阿里云-虚拟数字人 阿里云-虚拟数字人

阿里云-虚拟数字人是什么? …

阿里云-虚拟数字人 2 查看详情 阿里云-虚拟数字人

语法

用户可以按照下面的语法来匹配第一个数字与第二个数字的所有旋转,并确保它们是彼此的位旋转。

for (let i = 0; i < num1Binary.length; i++) {   if (num1Binary === num2Binary) {      return true;   }   num1Binary = num1Binary[num1Binary.length - 1] + num1Binary.substring(0, num1Binary.length - 1);}

在上面的语法中,我们将第一个数字与第二个数字逐一进行比较,如果匹配,则返回 true。

算法

第 1 步 – 使用 toString() 方法将两个数字转换为二进制字符串。

第 2 步 – 现在,附加前导零以使它们的长度相等。

第 3 步 – 使用 for 循环迭代第一个字符串。

第 4 步 – 如果 num1Binary 与 num2Binary 匹配,则返回 true。

步骤 5 – 在 for 循环中,如果第一个数字的当前旋转与第二个数字不匹配,则旋转第一个数字并获得新的旋转。

李>

第 6 步 – 继续将下一个轮换与第二个轮换匹配,直到任何轮换匹配。如果任何旋转不匹配,则返回 false。

示例 2

在下面的示例中,我们实现了上述算法来检查位旋转。在这里,我们逐一获取第一个数字的每次旋转,并将它们与第二个数字进行比较。如果任何旋转匹配,我们将返回 true,用户可以在输出中观察到。

   

Checking if two numbers are bit rotations of each other or not in JavaScript

let output = document.getElementById("output"); let num1 = 122; let num2 = 2147483678; let num3 = 1; function checkBitRotation(num1, num2) { let num1Binary = num1.toString(2); let num2Binary = num2.toString(2); // adding leading zeros to make both numbers of the same length while (num1Binary.length < num2Binary.length) { num1Binary = "0" + num1Binary; } // checking num1Binary and num2Binary are rotations of each other using for loop for (let i = 0; i < num1Binary.length; i++) { if (num1Binary === num2Binary) { return true; } num1Binary = num1Binary[num1Binary.length - 1] + num1Binary.substring(0, num1Binary.length - 1); } return false; } output.innerHTML += "The " + num1 + " and " + num2 + " are bit rotations of each other " + checkBitRotation(num1, num2) + "
"; output.innerHTML += "The " + num1 + " and " + num3 + " are bit rotations of each other " + checkBitRotation(num1, num3) + "
";

用户学习了两种不同的方法来检查两个数字是否是彼此的位循环。在第一种方法中,我们将第一个字符串与其自身连接起来,并检查第二个数字是否作为子字符串存在。在第二种方法中,我们使用 for 循环找到第一个数字的所有位旋转,并将它们与第二个数字进行匹配。

以上就是Javascript 程序检查两个数字是否是彼此的位循环的详细内容,更多请关注创想鸟其它相关文章!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至 chuangxiangniao@163.com 举报,一经查实,本站将立刻删除。
发布者:程序猿,转转请注明出处:https://www.chuangxiangniao.com/p/534845.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
度小满与哈工大共建“人工智能(大模型)联合研究中心”
上一篇 2025年11月9日 12:21:07
JavaScript:恪守我们的承诺
下一篇 2025年11月9日 12:21:22

相关推荐

  • MySQL数据库如何设计适合大数据量的表结构_案例分析?

    MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?MySQL数据库如何设计适合大数据量的表结构_案例分析?

    设计适合大数据量的mysql表结构,核心在于数据类型选对、索引用好、适当拆分。1. 合理选择字段类型,如根据数据范围选用tinyint/smallint代替bigint,固定值字段用enum类型,大文本字段单独拆表;2. 精准建立索引,高频查询字段建联合索引并遵循最左前缀原则,避免低区分度字段建索引…

    2026年9月21日 用户投稿
    100
  • 优酷怎么退出登录?-优酷退出登录的方法

    优酷视频作为当下广受欢迎的视频平台之一,许多用户在使用过程中会关心如何退出账号。那么,优酷如何退出登录?以下是详细的操作步骤,一起来看看吧! 优酷退出登录的具体方法 1、打开手机上的优酷应用,进入主界面后,点击底部菜单中的【我的】选项。 2、进入个人页面后,向下滑动屏幕,直到看到底部的【设置】入口,…

    2026年9月21日
    200
  • 余承东:三折叠能超越华为的只有华为

    9月4日,华为举行新品发布会,正式推出全球第二款商用三折叠手机——华为Mate XTs非凡大师。 继去年首发全球首款商用三折叠手机后,华为目前依然是行业内唯一实现三折叠手机量产并完成产品迭代的品牌。 华为常务董事、终端BG董事长余承东在会上强调:“三折叠能超越华为的只有华为。” 他表示,新机通过采用…

    2026年9月21日
    100
  • Java Random类如何生成随机数

    Random类位于java.util包,通过实例化生成伪随机数;无参构造以系统时间作种子,带参构造用固定种子可复现序列;提供nextInt()、nextDouble()等方法生成不同类型随机值;指定范围整数可用rand.nextInt(max-min)+min实现;多线程推荐ThreadLocalR…

    2026年9月21日
    100
  • VSCode怎么改环境_VSCode切换Python/Node等多版本环境教程

    切换VSCode环境需先安装对应语言扩展,再通过命令面板选择解释器或使用nvm切换Node版本,配合虚拟环境或launch.json配置确保运行和调试时使用正确版本,可通过终端命令验证环境,若失效可检查缓存、扩展冲突或权限问题。 VSCode改环境,其实就是让VSCode知道你想用哪个版本的Pyth…

    2026年9月21日
    000
  • OPPO A6 Pro官宣:开启手机六年耐用新时代

    9月4日,OPPO正式宣布将于9月9日下午14:30推出全新机型OPPO A6 Pro,标志着手机六年持久耐用新纪元的开启。 据官方预热内容显示,OPPO A6 Pro在防水、抗摔及整体耐久性方面实现全面升级,成为迄今为止OPPO A系列中性能最强大、防护能力最出色的机型。 回顾去年发布的OPPO …

    2026年9月21日
    000
  • 构建与调试PHP简易路由系统:从原理到实践

    本文将指导您如何从零开始构建一个基础的PHP路由系统,实现URL到控制器和方法的映射。我们将深入探讨$_SERVER[‘REQUEST_URI’]的解析、控制器文件的动态加载、方法调用以及如何通过.htaccess进行URL重写。同时,文章还将详细讲解常见的“未定义变量”错误…

    2026年9月21日
    100
  • windows10如何查看S.M.A.R.T.硬盘状态_windows10硬盘S.M.A.R.T.状态查看方法

    电脑运行慢、蓝屏或文件损坏可能是硬盘故障前兆,可通过S.M.A.R.T.技术检测健康状况。1、使用WMIC命令行工具输入“wmic diskdrive get model,status”查看状态,显示Pred Fail需立即备份数据;2、CrystalDiskInfo可深度分析S.M.A.R.T.参…

    2026年9月21日
    100
  • Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧Photopea的AI功能怎么裁剪图片?快速实现高效图片裁剪技巧

    Photopea的AI功能通过智能选择工具与内容感知技术结合,实现高效图片裁剪。首先使用对象选择、快速选择或魔棒工具智能识别主体或背景,再通过“选择并遮住”精细调整边缘,尤其适用于复杂轮廓如发丝。随后可应用图层蒙版透明化背景,并用裁剪工具调整画布范围。结合内容感知填充可移除干扰元素并自动补全画面,内…

    2026年9月21日 用户投稿
    300
  • Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担Sublime开发MySQL存储过程教程实战_封装重复逻辑减少前端负担

    在web开发中使用mysql存储过程能有效封装逻辑并减少前端负担,本文介绍了其优势、环境配置及实战技巧。一、存储过程的优势包括减少网络传输、提高性能、统一业务逻辑;二、sublime text配置步骤为安装package control、sublimerepl插件、sql语法高亮插件,并建议新建.s…

    2026年9月21日 用户投稿
    800
  • Linux中如何安装Redis_Linux安装Redis服务的完整教程

    安装编译环境和依赖:Ubuntu/Debian用apt安装build-essential tcl wget,CentOS/RHEL用yum安装Development Tools和tcl wget。2. 下载Redis 7.2.4源码包并%ignore_a_1%,进入目录后执行make编译,可选mak…

    2026年9月21日
    000
  • 小红书从哪里看私信记录?私信记录如何清理?

    在小红书上与朋友或喜欢的博主互动时,私信是必不可少的沟通方式。不少新手用户常常困惑于如何查找过往的聊天内容。本文将为你详细说明查看私信记录的具体步骤,并分享几种实用的清理方法,帮助你轻松管理私信箱,让对话界面更清爽。 一、如何找到小红书的私信记录? 查看私信的操作非常直观,只需几个简单步骤即可完成。…

    2026年9月21日
    000
  • 编译CEGUI「建议收藏」

    大家好,很高兴再次与你们见面,我是你们的老朋友全栈君。 平台: Windows 7 / 64位 / VS2005 CEGUI下载 地址:https://www.php.cn/link/9a2327a2fcc570914ce9c9e61581cbf8 源码选择: CEGUI 0.7.9 库源码下载 这…

    2026年9月21日
    000
  • 英睿达T700 4TB对决WD_BLACK SN850X 4TB:PCIe 5.0 SSD的连续读写,在实际游戏中加载速度差异明显吗?

    在绝大多数游戏加载场景中,英睿达T700 4TB与WD_BLACK SN850X 4TB速度差异不明显,因游戏加载受限于4K随机读取性能及系统瓶颈,而非连续读取速度;尽管T700峰值更高,但实际加载表现受CPU、内存和散热限制,SN850X已能满足需求。 直接说结论:在绝大多数实际游戏加载场景中,英…

    2026年9月21日
    100
  • VSCode代码空格怎么解决_VSCode缩进与格式处理教程

    解决VSCode代码空格和缩进问题,需配置settings.json中的缩进规则并引入外部格式化工具。首先设置”editor.tabSize”、”editor.insertSpaces”和”editor.detectIndentation&…

    2026年9月21日
    100
  • PHP框架中间件有什么用处_PHP框架中间件设计与实现

    PHP框架中间件是处理请求和响应的过滤器,用于实现身份验证、日志记录、CORS等通用逻辑,核心价值在于解耦和提升可维护性。通过定义中间件接口、具体中间件类及管道调度器可实现自定义中间件,如身份验证或CORS处理。在Laravel中可通过Kernel.php配置全局、分组或路由级中间件,执行顺序按注册…

    2026年9月21日
    000
  • 苹果手机4800万像素功能如何开启

    苹果手机4800万像素模式开启方法 若想使用苹果手机的4800万像素拍摄功能,首先需确认您的设备型号及系统版本是否支持该功能。进入手机“相机”应用后,前往系统设置中的“相机”选项,查找“分辨率”或“格式”相关设置。部分机型在此处会提供“HEIF高效率”或“ProRAW”选项,启用后可激活4800万像…

    2026年9月21日
    200
  • 52核+288MB缓存痛击AMD锐龙X3D Intel确认Nova Lake史上最强

    10月26日消息,在amd推出锐龙x3d家族处理器后,凭借超大容量的3d缓存实现了游戏性能的全面反超,成功登顶最强游戏cpu宝座。 过去,Intel酷睿处理器虽在多核性能上稍逊一筹,但在游戏领域始终占据主导地位。然而,随着X3D系列的强势崛起,这一最后的防线也被攻破。此前,Intel已公开承认其在桌…

    2026年9月21日
    000
  • Java中字符到数字转换:解决for循环提前返回的常见陷阱

    本文探讨java中`for`循环在字符到数字转换时,因`return`语句放置不当导致程序提前终止、无法完整处理字符串的问题。我们将分析这种常见陷阱,并提供修正方案,演示如何正确利用循环填充数组,并在循环结束后统一返回最终结果,确保每个字符都能被准确映射和组合。 引言:字符到数字的映射需求 在编程实…

    2026年9月21日
    000
  • 燕云十六声装备回收转流派技巧分享

    燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享燕云十六声装备回收转流派技巧分享

    燕云十六声中,装备是角色变强的关键所在!武器、防具、饰品各具特色,品质更是分为绿、蓝、紫、金四个等级。想要高效提升战力、不浪费培养资源?那就必须掌握装备回收技巧与流派转换策略。具体怎么操作?继续往下看,实用攻略全解析助你轻松上手! 燕云十六声装备回收与转流派技巧指南 一、装备和武学的区别要分清 新手…

    2026年9月21日 用户投稿
    100

发表回复

登录后才能评论
关注微信