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