一个特殊的排列的实现

这二天,做项目的时候,做到拨号盘相关的拼音检索,遇到一个有效的排列的问题,处理的方法记录一下。

问题描述:

A B 为字符串数组
现为了描述方便,A[1] B[1]分别为第一个元素,A B 长度一致。

要求组成一下串:

X[1]X[2]X[3]...

X取值A B

组成串必须以A[1]或者B[1]开头,然后后面若有其他元素,则连续:
比如:
二个元素:A[1]B[2] ,A[1]A[2],B[1]B[2],B[1]A[2];
三个元素:A[1]A[2]A[3],A[1]A[2]B[3],A[1]B[2]A[3],A[1]B[2],B[3].....
...
...

看完上面,我们发现其实问题就是一个填字游戏,_ _ _ _ ,我们往每个空格填入对应下标的A B数组的元素。

由于是二个数组,我们可以通过0 1 二进制来表示 A B数组。

这样看来,我们的填字游戏可以扩展到N位的二进制的问题,比如四位的填字,从0000~1111,也就是[0,Math.power(2,bit))。

判断对应字符串位置的字符就可以了。

另外记录一下:

               Integer.toBinaryString(int i); 可以将一个十进制转成他对应的二进制串。

 

Mark一下,以后注意。

 

posted @ 2012-12-29 16:06  ItNoob  阅读(115)  评论(0编辑  收藏  举报