一个字符串都是由1和0 组成的,例如"11001010","101010111"....,我要实现一个方法,判断字符串是否符合如下规则,1和0要交叉出现,一方多余的可以补相同,比如都要是:"1010111","0101","101"....,
如果判断正确返回true,错误返回false

解决方案 »

  1.   

    class Test2{
        public static boolean judge(String str){
    boolean b=true;
    byte[] arr=str.getBytes();
    for(int i=0;i<arr.length-1;i++){
    boolean c=((arr[i]-'0')^(arr[i+1]-'0'))==1;//if not same return true
    if(!c){
    for(int j=i+2;j<arr.length;j++){
    boolean bo=((arr[i+1]-'0')^(arr[j]-'0'))==0;//if same return true
    c=true&bo;
    }
    return c;
    }
    else{
    b&=c;
    }
    }
    return b;
        }
        public static void main(String[] args){
    System.out.println(new Test2().judge("10101010101010101"));
        }
    }
      

  2.   

    楼上的写的有点问题,我用100,10100,测试,应该显示true,而你的代码调用显示false
      

  3.   

    昏··我的出理解是 相邻的不同为true 末尾连续为真如:101010101010 或 010101010101 或 01010100000 或 101010101111都为true
        其他为false我是觉得你题意没说清楚或许我理解能力差····呵呵··
      

  4.   

    假如一方有多余的就补全,如:1010100000,0多余了,可以补全
    返回的还是true,但是如果1010110,就返回false