BackmediumTwo PointersSalesforce

Balanced Package Sequence Solution

Problem Statement

Given a sequence of characters, where 'L' represents a large package and 'S' represents a small package, find the length of the longest contiguous subsequence that contains an equal number of 'L' and 'S' packages and starts and ends with the same character.

Example 1
Input
LSL
Output
3

Explanation: Step-by-step: with input 'LSL', we first initialize two pointers, one at the start and one at the end of the string. We then move the pointers towards each other, counting the number of 'L' and 'S' packages. When the counts are equal, we check if the start and end characters are the same. If they are, we update the maximum length of the subsequence. Finally, we return the maximum length.

Example 2
Input
SSLS
Output
0

Explanation: Step-by-step: with input 'SSLS', we first initialize two pointers, one at the start and one at the end of the string. We then move the pointers towards each other, counting the number of 'L' and 'S' packages. However, since the counts are never equal, we return 0 as there is no subsequence that meets the conditions.

Constraints

  • 1 <= length of the input string <= 1000
  • The input string only contains 'L' and 'S' characters.
Live Compiler1 Free Run Available
Loading Editor...
Test Cases & Output
Click "Run" to test your 1 free compile trial!

šŸš€ Practice this problem

Run code, get AI hints & track streak

Sign Up Free

Balanced Package Sequence — Problem Statement & Solution Guide

Two PointersMediumMixed
TimeO(n)
|
SpaceO(1)

Problem Description

Given a sequence of characters, where 'L' represents a large package and 'S' represents a small package, find the length of the longest contiguous subsequence that contains an equal number of 'L' and 'S' packages and starts and ends with the same character.

Examples

Example 1

Input

LSL

Output

3

Explanation: Step-by-step: with input 'LSL', we first initialize two pointers, one at the start and one at the end of the string. We then move the pointers towards each other, counting the number of 'L' and 'S' packages. When the counts are equal, we check if the start and end characters are the same. If they are, we update the maximum length of the subsequence. Finally, we return the maximum length.

Example 2

Input

SSLS

Output

0

Explanation: Step-by-step: with input 'SSLS', we first initialize two pointers, one at the start and one at the end of the string. We then move the pointers towards each other, counting the number of 'L' and 'S' packages. However, since the counts are never equal, we return 0 as there is no subsequence that meets the conditions.

Constraints

  • 1 <= length of the input string <= 1000
  • The input string only contains 'L' and 'S' characters.

Optimal Approach & Strategy

The optimal approach uses two pointers, one at the start and one at the end of the subsequence, and expands or contracts the subsequence as needed to maintain an equal number of 'L' and 'S' packages. This approach has a time complexity of O(n).

Brute Force Approach

A naive approach would involve checking all possible subsequences of the input string to see if they have an equal number of 'L' and 'S' packages and start and end with the same package size. This approach has a time complexity of O(n²) due to the nested loops. It's inefficient for large inputs.

Asked in Top Tech Interviews

Salesforce

Solve in Interative Editor

Ready to test your code? Open our built-in compiler, run custom test suites, and see detailed complexity analysis reports instantly.