This is one Hard category problem on LeetCode.
A few things to observe in this problem are :
- Treating a special binary string as a string with 1 corresponding to char ‘(‘ and 0 to character ‘)’ reduces it to a valid string of properly closed parentheses.
- The first character of special binary strings (like the input string) has to be a 1, and the last character, a 0.
- The special binary string can be a concatenation of only special binary strings.
Keeping these factsin mind, here is my recursive solution to the same:
class Solution { public String makeLargestSpecial(String S) { ArrayList res = new ArrayList<>(); int count = 0, st = 0; for (int i=0; i<S.length(); i++) { if (S.charAt(i) == '1') count++; else count--; if (count == 0) { res.add('1' + makeLargestSpecial(S.substring(st+1, i)) + '0'); st = i+1; } } Collections.sort(res, Collections.reverseOrder()); return String.join("", res); } }
Let me know your thouhts in the comments below.
Happy Coding!
No comments:
Post a Comment