From e3d66b09ab6c5e56a81de1416fb9b0b5f0fa3766 Mon Sep 17 00:00:00 2001 From: Matej Focko Date: Thu, 25 Apr 2024 10:09:26 +0200 Subject: [PATCH] =?UTF-8?q?java:=20add=20=C2=AB2370.=20Longest=20Ideal=20S?= =?UTF-8?q?ubsequence=C2=BB?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Matej Focko --- java/longest-ideal-subsequence.java | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 java/longest-ideal-subsequence.java 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; + } +}