首页 > 解决方案 > 查找字符串中 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}

我已经尝试在二进制数的帮助下解决它,但我失败了。

标签: javaalgorithmpermutation

解决方案


“二进制数”是一个非常好的方法。因此,首先将您的路径视为二进制数。
所以len=3你得到所有长度为 3 的二进制数。

这些是数字 0 到 7(十进制)。(= 2^3 = 8 个数字)

因此,编写一个循环来计数0 to (2^len -1) Than 只需将数字转换为二进制表示并将 0 替换为 R 并将 1 替换为 L (所有前导 0 始终获得 length 的二进制表示len


推荐阅读