一个特殊的排列的实现
这二天,做项目的时候,做到拨号盘相关的拼音检索,遇到一个有效的排列的问题,处理的方法记录一下。
问题描述:
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一下,以后注意。