随意的一串数字比如说:1000110001->10110110001->101就是说相连的0只保留一个。怎么实现啊??麻烦高手看看,有空的话写点实现算法的伪代码都行。看着好像蛮简单的却想了一个上午都没设计出来啊!!汗颜
 

解决方案 »

  1.   

    String a="1000110001";
      StringBuilder sb=new StringBuilder();
      boolean first=true;
      for(int i=0;i<a.length();i++){
      if(a.charAt(i)=='0'){
      if(!first)  continue;
      else {
      sb.append(a.charAt(i));
      first=false;
      }
      }
      else if(a.charAt(i)=='1'){
      sb.append(a.charAt(i));
      first=true;
      }
      }
      

  2.   

    逐位判断  
    大概意思if x(n) !=0 
      b(m)=x(n) m++ n++
      

  3.   

    不知道啥算法,不过下面的方法可以完成这样的需求:String s = "1000110001";

    System.out.println(s.replaceAll("[0]+", "0"));
      

  4.   

    伪码:
    以10001->101为例int a,b,c,d,e;
    a=10001/10000;
    b=10001/1000%10;
    c=10001/100%10;
    d=10001/10%10;
    e=10001%1000;相邻数字相互比较,如果相等且为0,则忽略前一个数字。
    再对没有忽略的数字进行顺序重组。