Java 组合_JAVA_编程开发_程序员俱乐部

中国优秀的程序员网站程序员频道CXYCLUB技术地图
热搜:
更多>>
 
您所在的位置: 程序员俱乐部 > 编程开发 > JAVA > Java 组合

Java 组合

 2014/10/30 0:17:14  hw1287789687  程序员俱乐部  我要评论(0)
  • 摘要:场景:String[][]arr1=newString[3][];arr1[0]=newString[]{"a","[^a]"};arr1[1]=newString[]{"b","[^b]"};arr1[2]=newString[]{"c","[^c]"};把arr1[0],arr1[1],arr1[2]进行组合,组合的规则:(1){"a","[^a]"}X{"b","[^b]"}X{"c","[^c]"}(2)组合的结果中必须同时有arr1[0],arr1[1],arr1[2]中的一个元素
  • 标签:Java

场景:

?

class="java" name="code">String[][]arr1=new String[3][];
		arr1[0]=new String[]{"a","[^a]"};
		arr1[1]=new String[]{"b","[^b]"};
		arr1[2]=new String[]{"c","[^c]"};

?把arr1[0],arr1[1],arr1[2] 进行组合,组合的规则:

?

(1)monospace; font-size: 1em; line-height: 1.5; background-color: #fafafa;">{"a","[^a]"} X?{"b","[^b]"}?X{"c","[^c]"}

(2)组合的结果中必须同时有arr1[0],arr1[1],arr1[2]中的一个元素.

比如"abc"就是正确的,a[^b]b就是错误的,因为a[^b]b没有{"c","[^c]"}中的元素.

"acb"是错误的,因为没有按顺序

/***
	 * 
	 * @param a
	 * @param aa
	 * @param index : 初始值为0
	 */
	public static List<StringBuffer> cc(String[][] aa,int index,List<StringBuffer> list){
		
		if(index>=aa.length){//说明已经遍历完成
			return list;//并不是每次循环都会执行,最后才会执行此语句.
		}
		String cc[]=aa[index];
		int length=cc.length;
		List<StringBuffer> listNew=new ArrayList<StringBuffer>();
		if(list==null||list.size()==0){//首次循环
			for(int i=0;i<length;i++){
				listNew.add(new StringBuffer(cc[i]));
			}
		}else{
			for(int i=0;i<length;i++){
				for(int j=0;j<list.size();j++){
					StringBuffer sb=list.get(j);
					StringBuffer sb2=new StringBuffer(sb);
					sb2.append(cc[i]);
					listNew.add(sb2);
				}
			}
		}
		List<StringBuffer> list33=cc(aa, ++index, listNew);
		if(!ValueWidget.isNullOrEmpty(list33)){
			return list33;
		}
		return null;
	}
	/***
	 * 组合
	 * @param aa
	 * @return
	 */
	public static List<StringBuffer>assemble(String[][] aa){
		return cc(aa, 0, null);
	}

?

?测试1:

@Test
	public void tset_cc(){
		String[][]arr1=new String[3][];
		arr1[0]=new String[]{"a","[^a]"};
		arr1[1]=new String[]{"b","[^b]"};
		arr1[2]=new String[]{"c","[^c]"};
		
		List<StringBuffer> list=assemble(arr1);
		System.out.println(list.size());
		System.out.println(list);
	}

?测试结果:

8
[abc, [^a]bc, a[^b]c, [^a][^b]c, ab[^c], [^a]b[^c], a[^b][^c], [^a][^b][^c]]

?

测试2:

@Test
	public void tset_cc2(){
		String[][]arr1=new String[3][];
		arr1[0]=new String[]{"a"};
		arr1[1]=new String[]{"b"};
		arr1[2]=new String[]{"c"};
		
		List<StringBuffer> list=assemble(arr1);
		System.out.println(list.size());
		System.out.println(list);
	}

?测试结果:

1
[abc]

?

测试3:

@Test
	public void tset_cc2(){
		String[][]arr1=new String[2][];
		arr1[0]=new String[]{"a","1","one"};
		arr1[1]=new String[]{"b","2","two"};
//		arr1[2]=new String[]{"c","3"};
		
		List<StringBuffer> list=assemble(arr1);
		System.out.println(list.size());
		System.out.println(list);
	}

?测试结果:

9
[ab, 1b, oneb, a2, 12, one2, atwo, 1two, onetwo]

?

  • 大小: 94.6 KB
  • 查看图片附件
上一篇: AndroidManifest.xml以及manifest节点 下一篇: 没有下一篇了!
发表评论
用户名: 匿名