解决方案 »
- SSH整合出现的问题java.lang.ClassNotFoundException: org.hibernate.util.DTDEntityResolver
- myeclipse.connection.profile
- 请高手指点
- 我按照浪曦struts2第一讲做了第一个程序
- struts 的validator问题 (请达人帮忙看看。。。)
- 类似的程序,为什么一个必须要NEW,一个一定不要?
- 自己做一个登录系统,必须要用到数据库吗?
- 在本页面中,按一下按纽让一个本页面的变量增加1该怎么实现啊?
- 我把.jsp编译之后的.class文件删除
- A推荐B,B推荐C,C推荐D、E和F用SQL计算出A推荐多少人
- weboffice控件IE不提示下载
- 请问一个项目开了多个线程,我怎么能操作其中的某一个线程呢
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就好了
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;
}
}
}
第二组号码:312,145也就是 123, 213, 321 都可以
那这样,是不是有逗号?
有的话 split 然后 String.index();
String.length() = 3;
包含1,2,3 这三个字符就是了
中间有 321
取 String.index() 所有 1 的位置
然后旁边(左右)是否有 2,3
有就 ok
再判断是否有 3 或者 2(前面有了方向)
System.out.println(isContain("123",new String[]{"312","514"}));
}
private static boolean isContain(String a,String[] c){
boolean result =true;
StringBuffer content = new StringBuffer();
for(int i =0;i<c.length;i++){
String resultString =c[i];
content.append(resultString);
}
for(int i =0;i<a.length();i++){
String index= a.substring(i,i+1);
if(!content.toString().contains(index)){
result =false;
}
}
return result;
如果是 System.out.println(isContain("123", new String[] { "3124", "514" })); 怎么弄
System.out.println(isContain("123",new String[]{"3210","514"}));
}
private static boolean isContain(String a,String[] c){
boolean result =false;
StringBuffer content = new StringBuffer();
for(int i =0;i<c.length;i++){
String resultString =c[i];
content.append(resultString);
}
StringBuffer content1 = new StringBuffer();
if(content.toString().contains(a)){
result =true;
}else{
for(int i=content.length();i>0;i--){
content1.append(content.substring(i-1, i));
}
if(content1.toString().contains(a)){
result =true;
}
}
return result;
}刚刚没看明白 现在初略有写了一个
如果是 System.out.println(isContain("123", new String[] { "3124", "514" })); 怎么弄
如果是 System.out.println(isContain("123", new String[] { "3124", "514" })); 怎么弄
这个就应该是FLASE了吧,因为只要123的各种组合啊,那个明显不符。他那个3210进去也符合,感觉不合理,不过我项目用到的数字都是3位,指定好的,倒是也能满足需求,也挺方便
package aaa;import java.util.*;class MyElement {
private String value;
private String sequence;
public boolean equals(MyElement e){
if(e == null) return false;
return e.sequence.equals(this.sequence);
}
public MyElement(String value){
this.value = value;
char[] cs = new char[value.length()];
for(int i=0; i<value.length(); i++) cs[i] = value.charAt(i);
Arrays.sort(cs);
this.sequence = new String(cs);
}
}public class Test {
public boolean contains(Collection<MyElement> es, Collection<MyElement> toFind){
for(MyElement e1 : es){
for(MyElement e2 : toFind){
if(e2.equals(e2))
return true;
}
}
return false;
}
public static void main(String[] args){
List<MyElement> lst1 = new LinkedList<MyElement>();
lst1.add(new MyElement("123"));
List<MyElement> lst2 = new LinkedList<MyElement>();
lst2.add(new MyElement("321"));
lst2.add(new MyElement("456"));
Test obj = new Test();
System.out.println("find = " + obj.contains(lst1, lst2));
}
}