import java.util.ArrayList;
import java.util.Collections;
import java.util.List;
/**
* @author xnl
* @Description:
* @date: 2022/8/8 21:14
*/
public class Solution {
public static void main(String[] args) {
Solution solution = new Solution();
String s = "11011000";
System.out.println(solution.makeLargestSpecial(s));
}
public String makeLargestSpecial(String s) {
if (s.length() == 0){
return s;
}
List<String> list = new ArrayList<>();
for (int i = 0, j = 0, k = 0; i < s.length(); i++){
k += s.charAt(i) == '1' ? 1 : -1;
if (k == 0){
list.add("1" + makeLargestSpecial(s.substring(j + 1, i)) + "0");
j = i + 1;
}
}
Collections.sort(list, (a, b) -> (b + a).compareTo( a + b));
StringBuilder sb = new StringBuilder();
for (String s1 : list) {
sb.append(s1);
}
return sb.toString();
}
}
力扣:761. 特殊的二进制序列
最新推荐文章于 2022-11-16 22:23:49 发布
该博客介绍了一个Java程序,用于从给定的二进制字符串中构造一个由'1'和'0'组成的最长特殊字符串。程序通过递归和排序实现,确保每个子串都是以'1'开头,'0'结尾,并保持子串内部'1'和'0'的数量平衡。

961

被折叠的 条评论
为什么被折叠?



