Longest Ideal Subsequence
MediumHash TableStringDynamic Programming
Solution
export function longestIdealString(s: string, k: number): number {
const aCharCode = 'a'.charCodeAt(0);
let answer = 0;
const dp = new Array(26).fill(0);
for (let i = 0; i < s.length; i++) {
const charCode = s.charCodeAt(i) - aCharCode;
const startCode = Math.max(charCode - k, 0);
const endCode = Math.min(charCode + k, 25);
for (let code = startCode; code <= endCode; code++) {
dp[charCode] = Math.max(dp[charCode], dp[code]);
}
dp[charCode] += 1;
answer = Math.max(answer, dp[charCode]);
}
return answer;
}