Skip to content

Commit 285a22a

Browse files
authored
Create Readme.md
1 parent 4d03ab5 commit 285a22a

File tree

1 file changed

+31
-0
lines changed
  • April/Abiji-2020/C++/Longest Ideal Subseuquence

1 file changed

+31
-0
lines changed
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
# Longest Ideal String
2+
3+
## Problem Statement
4+
5+
Given a string `s` consisting of lowercase English letters and an integer `k`, we define an "ideal" string as one that can be obtained by removing exactly `k` characters from `s` such that each letter appears no more than once in the resulting string. Return the length of the longest ideal string that can be formed.
6+
7+
8+
## Intuition
9+
10+
To find the longest ideal string, we need to remove a minimum number of characters such that each letter appears at most once in the resulting string. This suggests a dynamic programming approach where we track the longest ideal string that can be obtained at each index `i` of the input string `s`.
11+
12+
## Approach
13+
14+
1. Initialize an array `dp` of size 27 (representing lowercase English letters) to store the length of the longest ideal string that can be obtained ending at each letter.
15+
2. Iterate over the input string `s` from right to left.
16+
3. For each character at index `i`, calculate the index `idx` by subtracting the ASCII value of 'a'. Initialize a variable `maxi` to store the maximum length of the ideal string that can be obtained ending at character `s[i]`.
17+
4. Determine the range of characters to consider for the current character `s[i]`. Let `left` be the maximum index such that `s[left]` is within `k` characters to the left of `s[i]`, and `right` be the minimum index such that `s[right]` is within `k` characters to the right of `s[i]`.
18+
5. Iterate over the range `[left, right]` and update `maxi` with the maximum value of `dp[j]` for each character `s[j]` within the range.
19+
6. Update `dp[idx]` with `maxi + 1`, indicating the length of the longest ideal string that can be obtained ending at character `s[i]`.
20+
7. Iterate over the `dp` array to find the maximum value, which represents the length of the longest ideal string.
21+
8. Return the maximum value found.
22+
23+
## Complexity Analysis
24+
25+
- **Time Complexity**:
26+
- The outer loop runs for each character in the input string, resulting in a time complexity of O(n), where n is the length of the input string `s`.
27+
- The inner loop for determining the range of characters also runs in constant time.
28+
- Overall, the time complexity is O(n).
29+
- **Space Complexity**:
30+
- We use an additional array `dp` of size 27, resulting in a space complexity of O(1).
31+

0 commit comments

Comments
 (0)