我想创建所有可能的变体来遍历数据结构。当我横移时,我可以向左(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}
我已经试着用二进制数来解决这个问题,但我失败了。
2条答案
按热度按时间wlwcrazw1#
“二进制数”是一个非常好的方法。所以首先把你的路径想象成二进制数。
所以对于
len=3
所有长度为3的二进制数。这些是数字0到7(十进制)。(=2^3=8个数字)
所以写一个循环从中计数
0 to (2^len -1)
而不是简单地将数字转换成二进制表示,用r替换0,用l替换1(所有前导的0都得到长度的二进制表示)len
)vsnjm48y2#
你使用二进制数的建议在我看来是可行的。我们可以生成一个在0和2的某个幂之间的固定宽度和零填充二进制数的集合。然后,将所有零替换为
L
所有的人R
.这张照片: