• import org.junit.jupiter.api.Test;

    import java.util.ArrayList;
    import java.util.Collections;
    import java.util.Comparator;
    import java.util.List;

    /**
    * @author YAM
    */
    public class Test01 {
    public static void main(String[] args) {
    String s = "11011000";
    String ans = makeLargestSpecial(s);
    System.out.println("ans="+ans );
    }

    public static String makeLargestSpecial(String s) {
    if (s.length() <= 2) {
    return s;
    }
    int cnt = 0, left = 0;
    List<String> subs = new ArrayList<String>();
    for (int i = 0; i < s.length(); ++i) {
    if (s.charAt(i) == '1') {
    ++cnt;
    } else {
    --cnt;
    if (cnt == 0) {
    System.out.println("i="+i);
    subs.add("1" + makeLargestSpecial(s.substring(left + 1, i)) + "0");
    //递归如下:
    // substring ( 1 , 7 ) , >= 1 && < 7
    // makeLargestSpecial("101100") first s = "101100"为 非 特殊的二进制序列
    // "101100" 拆解:@start
    // substring ( 1 , 1 ) , >= 1 && < 1 , left = i(1) + 1 = 2
    // makeLargestSpecial("") second
    // return s (空) subs.add("10") 第一次添加
    // substring ( 3 , 5 ) , >= 3 && < 5
    // makeLargestSpecial("10") third
    // return s ("10") subs.add("1100") 第二次添加 @end
    // subs = [10, 1100];
    left = i + 1;
    //i=7
    //i=1
    //i=5
    }
    }
    }
    System.out.println("subs2="+subs);
    Collections.sort(subs, Comparator.reverseOrder());
    System.out.println("subs1="+subs);
    StringBuilder ans = new StringBuilder();
    for (String sub : subs) {
    ans.append(sub);
    System.out.println(sub);
    }
    return ans.toString();
    }

    }

以上注释即为递归解释

最新文章

  1. 关于jsp的总结
  2. FMX下Edit只能输入数字
  3. Android Session
  4. iOS 框架收集
  5. mysql in和or查询效率
  6. 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
  7. 求小于等于n的所有素数
  8. C++ 学习资料搜寻与学习(第一期)(未完待续)
  9. Flexible 弹性盒子模型之CSS align-items 属性
  10. java--调整JVM内存的大小
  11. centos5.5get 递归下载整个网站
  12. ES6入门2
  13. Finally-操作返回值
  14. 【读书笔记】【深入理解ES6】#8-迭代器(Iterator)和生成器(Generator)
  15. InvocationTargetException异常解析
  16. 【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈
  17. ASP.NET MVC实现Excel文件的上传下载
  18. Install SharePoint 2013 with SP1 on Windows Server 2012 R2 error - This Product requires .NF 4.5
  19. SpringBoot配置文件application.properties详解
  20. 微信小程序 引入公共页面的几种情况

热门文章

  1. Aspose.Cells实现excel预览
  2. 编译安装oh-my-zsh
  3. MathNet用到的一些功能
  4. ArcObjects SDK开发 013 MapFrame
  5. MongoDB安全加固,防止数据库攻击删除勒索威胁
  6. Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)
  7. JavaScript:操作符:赋值运算符和空赋值(??=)
  8. buuctf_Dest0g3_crypto
  9. 2022i春秋-冬季赛nan’s analysis
  10. [python] ​python-pinyin库