例如:
第一组号码 123
第二组号码:312,145
我希望的结果是第二组号码里只要包含123,不管什么顺序 都要返回true
用java如何来判断?想了一下午了。

------解决方案--------------------
参考全排列
------解决方案--------------------
如果想简单的做,楼主可以将123的顺序组合:123,132,213,231,。。放到一个List,
List sList = new ArrayList();//将123的组合加入这个集合
List bList = ...//放置需要判断的第二组号码:312,145
boolean rs = false;
for(Integer s:sList){
if(bList.contatin(s){
rs = true;
break;
}
}
判断下rs是否为true就好了
------解决方案--------------------
你再 优化下 ,其实找到后就不用递归循环了
public static void main(String[] args) throws Exception {
String buf[]={"1","2","3"};
List<String> item =new ArrayList<String>();
perm(buf,0,buf.length-1,item);
String val="312,145";
String strs[]=val.split(",");
for (String o : strs) {
if(item.contains(o)){
System.out.println("包含"+o);
}
}
}
public static void perm(String[] buf,int start,int end,List<String> list){
if(start==end){//当只要求对数组中一个字母进行全排列时,只要就按该数组输出即可(特殊情况)
String val="";
for(int i=0;i<=end;i++){
val+=buf[i];
}
list.add(val);
}
else{//多个字母全排列(普遍情况)
for(int i=start;i<=end;i++){//(让指针start分别指向每一个数)
String temp=buf[start];//交换数组第一个元素与后续的元素
buf[start]=buf[i];
buf[i]=temp;
perm(buf,start+1,end,list);//后续元素递归全排列
temp=buf[start];//将交换后的数组还原
buf[start]=buf[i];
buf[i]=temp;
}
}
}