Minimum Length of String After Deleting Similar Ends
Delete matching characters from both ends (same char prefix from left, suffix from right). Minimize length.
Example 1
Input: s="ca" → Output: 2
Example 2
Input: s="cabaabac" → Output: 0
Example 3
Input: s="aabccabba" → Output: 3
Solution Approach
Two pointers: while left < right and chars match, delete all matching chars on both sides.
- left=0, right=n-1
- While left < right and s[left]==s[right]
- Advance left past all s[left] chars
- Advance right back past all s[right] chars
- Return max(0, right-left+1)
Java
public int minimumLength(String s) {
int left = 0, right = s.length() - 1;
while (left < right && s.charAt(left) == s.charAt(right)) {
char c = s.charAt(left);
while (left <= right && s.charAt(left) == c) left++;
while (left <= right && s.charAt(right) == c) right--;
}
return right - left + 1;
}
- Time Complexity: O(n)
- Space Complexity: O(1)