java - 检查整数是另一个整数的位旋转

标签 java c++ rotation bit-manipulation

给定两个整数 a 和 b,我们如何检查 b 是 a 的旋转版本?

例如,如果我有 a = 0x01020304(二进制 0000 0001 0000 0010 0000 0011 0000 0100),那么以下 b 值是正确的:

  • ...
  • 0x4080C1(右旋2)
  • 0x810182(右旋1)
  • 0x2040608(左旋1)
  • 0x4080C10(左旋2)
  • ...

最佳答案

对于 n 位数字,您可以使用 KMP algorithm在复杂度 O(n) 的 a 的两个拷贝中搜索 b。

关于java - 检查整数是另一个整数的位旋转,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16979726/

相关文章:

java - 如何在 JPA 中加入 JOIN?

java - 在单个 jar 中组装多模块 maven 项目

java - MVVM-我应该在哪里调用用户位置?

c++ - 64 位和 32 位工具在一个环境中运行

c++ - 用 boost::spirit 解析成一个 vector<vector<double>>

C++ - 我的脚本在 SRC 中吗?

c++ - 是否可以仅使用四元数在 3D 空间中旋转 vector ?

java - 从Java中资源文件夹的子文件夹加载文件

ios - 当我更改 ViewController 时 UIImageView 不旋转

Android - 用手指旋转 ImageView 会移动其他 View