LC761.特殊的二进制序列
2024-10-20 20:35:35
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();
}
}
以上注释即为递归解释
最新文章
- 关于jsp的总结
- FMX下Edit只能输入数字
- Android Session
- iOS 框架收集
- mysql in和or查询效率
- 基于SpringMVC下的Rest服务框架搭建【1、集成Swagger】
- 求小于等于n的所有素数
- C++ 学习资料搜寻与学习(第一期)(未完待续)
- Flexible 弹性盒子模型之CSS align-items 属性
- java--调整JVM内存的大小
- centos5.5get 递归下载整个网站
- ES6入门2
- Finally-操作返回值
- 【读书笔记】【深入理解ES6】#8-迭代器(Iterator)和生成器(Generator)
- InvocationTargetException异常解析
- 【RL-TCPnet网络教程】第1章 当前主流的小型嵌入式网络协议栈
- ASP.NET MVC实现Excel文件的上传下载
- Install SharePoint 2013 with SP1 on Windows Server 2012 R2 error - This Product requires .NF 4.5
- SpringBoot配置文件application.properties详解
- 微信小程序 引入公共页面的几种情况
热门文章
- Aspose.Cells实现excel预览
- 编译安装oh-my-zsh
- MathNet用到的一些功能
- ArcObjects SDK开发 013 MapFrame
- MongoDB安全加固,防止数据库攻击删除勒索威胁
- Django三大主流Web框架(django版本安装-项目创建-应用创建-django三板斧)
- JavaScript:操作符:赋值运算符和空赋值(??=)
- buuctf_Dest0g3_crypto
- 2022i春秋-冬季赛nan’s analysis
- [python] ​python-pinyin库