https://leetcode.com/problems/special-binary-string/description/
题目大意:只有0和1组成的串,定义了1和0个数相同的串为特殊串,可以交换这种特殊串,问使得字典序最大的串是什么样子。
解题思路:考虑每个满足要求的子串,都可以计算出一个字典序最大的值,而且满足要求的子串开头肯定为1结尾肯定为0。可以考虑递归的方法实现。
class Solution {
public String makeLargestSpecial(String s) {
int cnt =0;
List<String> list = new LinkedList<>();
int j=0;
for(int i=0;i<s.length();i++)
{
if(s.charAt(i)=='1')
cnt++;
else cnt--;
if(cnt==0)
{
list.add('1'+makeLargestSpecial(s.substring(j+1,i))+'0');
j= i+1;
}
}
Collections.sort(list,Collections.reverseOrder());
return String.join("",list);
}
}