mirror of
https://gitlab.com/mfocko/LeetCode.git
synced 2024-11-09 15:59:06 +01:00
go: add «1717. Maximum Score From Removing Substrings»
Signed-off-by: Matej Focko <me@mfocko.xyz>
This commit is contained in:
parent
f6b4c01bbd
commit
c2b4298de8
1 changed files with 39 additions and 0 deletions
39
go/maximum-score-from-removing-substrings.go
Normal file
39
go/maximum-score-from-removing-substrings.go
Normal file
|
@ -0,0 +1,39 @@
|
|||
package main
|
||||
|
||||
func maximumGain(s string, x int, y int) int {
|
||||
reverseString := func(s string) string {
|
||||
runes := []rune(s)
|
||||
for i, j := 0, len(runes)-1; i < j; i, j = i+1, j-1 {
|
||||
runes[i], runes[j] = runes[j], runes[i]
|
||||
}
|
||||
return string(runes)
|
||||
}
|
||||
|
||||
// swap for bigger score
|
||||
if x < y {
|
||||
x, y = y, x
|
||||
s = reverseString(s)
|
||||
}
|
||||
|
||||
aCount, bCount, points := 0, 0, 0
|
||||
for _, c := range s {
|
||||
if c == 'a' {
|
||||
aCount++
|
||||
} else if c == 'b' {
|
||||
if aCount > 0 {
|
||||
aCount--
|
||||
points += x
|
||||
} else {
|
||||
bCount++
|
||||
}
|
||||
} else {
|
||||
points += y * min(bCount, aCount)
|
||||
aCount = 0
|
||||
bCount = 0
|
||||
}
|
||||
}
|
||||
|
||||
points += y * min(bCount, aCount)
|
||||
|
||||
return points
|
||||
}
|
Loading…
Reference in a new issue