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; } }