diff --git a/java/longest-ideal-subsequence.java b/java/longest-ideal-subsequence.java new file mode 100644 index 0000000..9ee3894 --- /dev/null +++ b/java/longest-ideal-subsequence.java @@ -0,0 +1,24 @@ +class Solution { + public int longestIdealString(String s, int k) { + int[] lengths = new int[26]; + + int longest = 0; + for (int i = 0; i < s.length(); ++i) { + int c = s.charAt(i) - 'a'; + + int longestIncluding = 0; + for (int pred = 0; pred < 26; ++pred) { + if (Math.abs(pred - c) > k) { + continue; + } + + longestIncluding = Math.max(longestIncluding, lengths[pred]); + } + + lengths[c] = Math.max(lengths[c], longestIncluding + 1); + longest = Math.max(longest, lengths[c]); + } + + return longest; + } +}