diff --git a/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/Solution.java b/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/Solution.java index ae6622d..ff3d2a0 100644 --- a/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/Solution.java +++ b/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/Solution.java @@ -3,7 +3,7 @@ /** * Solution for the Minimum Deletions to Make String Balanced problem. * - *

Uses a split-point counting approach to compute minimum deletions in constant space. + *

Optimizes {@code SolutionDp} by collapsing the DP table into a single variable. * *

*/ class Solution { - /** - * Returns the minimum number of deletions to make {@code s} balanced. - * - * @param s the string of {@code 'a'} and {@code 'b'} characters - * @return the minimum number of deletions needed - */ int minimumDeletions(String s) { - int bCount = 0; - int aAfter = 0; - int bBefore = 0; - for (int i = 0; i < s.length(); i++) { + int bCount = s.charAt(0) == 'b' ? 1 : 0; + int minDel = 0; + for (int i = 1; i < s.length(); i++) { if (s.charAt(i) == 'b') { bCount++; } else { - aAfter++; - } - if (aAfter + bBefore > bCount) { - bBefore = bCount; - aAfter = 0; + minDel = Math.min(minDel + 1, bCount); } } - return Math.min(bCount, aAfter + bBefore); + return minDel; } } diff --git a/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/SolutionDp.java b/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/SolutionDp.java index 453d052..cf15851 100644 --- a/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/SolutionDp.java +++ b/src/main/java/codes/yam/leetcode/minimumdeletionstomakestringbalanced/SolutionDp.java @@ -3,7 +3,7 @@ /** * Bottom-up DP solution for the Minimum Deletions to Make String Balanced problem. * - *

Flips the memoized recursion into an iterative DP table. + *

Iterative DP table tracking minimum deletions at each position. * *