From d2c3765c5900fb330cbe64db4e4fe4bb9fc0915c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Khoa=20Hu=E1=BB=B3nh=20=28Daniel=29?= Date: Thu, 25 Apr 2024 23:44:11 +0700 Subject: [PATCH] Create main.go --- solution/2370/main.go | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) create mode 100644 solution/2370/main.go diff --git a/solution/2370/main.go b/solution/2370/main.go new file mode 100644 index 0000000..1df5097 --- /dev/null +++ b/solution/2370/main.go @@ -0,0 +1,33 @@ +package main + +func longestIdealString(s string, k int) int { + const maxChars = 26 + dp := make([]int, maxChars) + result := 0 + + for _, ch := range s { + maxLen := 0 + // Compute the max dp value from possible predecessors within range defined by k + for d := 0; d <= k; d++ { + if int(ch)-d >= 'a' { + maxLen = max(maxLen, dp[int(ch)-'a'-d]) + } + if int(ch)+d <= 'z' { + maxLen = max(maxLen, dp[int(ch)-'a'+d]) + } + } + // Update dp value for current character + dp[int(ch)-'a'] = maxLen + 1 + // Update result to keep track of the maximum length encountered so far + result = max(result, dp[int(ch)-'a']) + } + + return result +} + +func max(a, b int) int { + if a > b { + return a + } + return b +}