java - 查找字符串中 LR 的所有组合以遍历数据结构
问题描述
我想创建所有可能的变化来遍历数据结构。当我遍历时,我可以向左 (L) 或向右 (R)。所以我的计划是在遍历数据结构之前生成所有可能的路径。每个字符都应作为遍历的指令。
我需要一种方法来生成以下内容:
private List<String> createPaths(int len){
List<String> result = new ArrayList<>();
// no clue how to generate them
return result;
}
对于 len = 1,结果应该是:{L,R}
对于 len = 2,结果应该是:{LL,LR,RR,RL}
对于 len = 3,结果应该是:{LLL,LLR,LRL,LRR,RLL,RLR,RRL,RRR}
我已经尝试在二进制数的帮助下解决它,但我失败了。
解决方案
“二进制数”是一个非常好的方法。因此,首先将您的路径视为二进制数。
所以len=3
你得到所有长度为 3 的二进制数。
这些是数字 0 到 7(十进制)。(= 2^3 = 8 个数字)
因此,编写一个循环来计数0 to (2^len -1)
Than 只需将数字转换为二进制表示并将 0 替换为 R 并将 1 替换为 L (所有前导 0 始终获得 length 的二进制表示len
)
推荐阅读
- c# - IsWithinDistance 无法翻译
- c - 在共享库上实现缺失符号
- javascript - 客户端 JavaScript 如何将用户 ID/密码发送到 Apache 服务器,以便解锁受 .htpasswd 保护的文件夹?
- java - Java JSoup 从网站抓取 img src 返回一个奇怪的 url
- html - 从 Web 应用程序打印 ZPL 命令文件
- swift - 即使数据已更新,tableviewdeleterows 也会导致应用程序崩溃
- sql - 触发器仅允许类大小/最大值为 2。处理某些值,但不处理其他值
- linux-kernel - 为什么在 kvm 中 MTF 位会在一段时间后重置?
- openapi - OpenApi 3 中的鉴别器
- git - `git rebase` 如何在后台工作?