mirror of
https://github.com/halfrost/LeetCode-Go.git
synced 2025-07-19 21:31:22 +08:00
Add Biweekly 39 / weekly 215 solutions
This commit is contained in:
@ -0,0 +1,49 @@
|
||||
package leetcode
|
||||
|
||||
func minimumDeletions(s string) int {
|
||||
ai, bi, sum, temp, array := 0, 0, 0, 0, []int{}
|
||||
for ai = 0; ai < len(s); ai++ {
|
||||
if s[ai] == 'a' {
|
||||
break
|
||||
}
|
||||
}
|
||||
if ai != 0 && ai != len(s) {
|
||||
sum += ai
|
||||
}
|
||||
for bi = ai; bi < len(s); bi++ {
|
||||
if s[bi] == 'b' {
|
||||
break
|
||||
}
|
||||
}
|
||||
if s[bi-1] == 'a' {
|
||||
ai = bi - 1
|
||||
}
|
||||
if s[bi-1] == 'b' && bi != len(s) {
|
||||
ai = bi + 1
|
||||
}
|
||||
for j := bi; j < len(s); j++ {
|
||||
if s[j] == 'b' {
|
||||
temp++
|
||||
}
|
||||
if s[j] == 'a' && temp != 0 {
|
||||
array = append(array, temp)
|
||||
temp = 0
|
||||
}
|
||||
}
|
||||
if len(array) == 0 {
|
||||
return sum
|
||||
}
|
||||
dp := make([]int, len(array))
|
||||
dp[0] = min(array[0], len(array))
|
||||
for i := 1; i < len(array); i++ {
|
||||
dp[i] = min(dp[i-1]+array[i], dp[i-1]+len(array)-(i+1)+1)
|
||||
}
|
||||
return sum + dp[len(array)-1]
|
||||
}
|
||||
|
||||
func min(a int, b int) int {
|
||||
if a > b {
|
||||
return b
|
||||
}
|
||||
return a
|
||||
}
|
@ -0,0 +1,57 @@
|
||||
package leetcode
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"testing"
|
||||
)
|
||||
|
||||
type question1649 struct {
|
||||
para1649
|
||||
ans1649
|
||||
}
|
||||
|
||||
// para 是参数
|
||||
// one 代表第一个参数
|
||||
type para1649 struct {
|
||||
s string
|
||||
}
|
||||
|
||||
// ans 是答案
|
||||
// one 代表第一个答案
|
||||
type ans1649 struct {
|
||||
one int
|
||||
}
|
||||
|
||||
func Test_Problem1649(t *testing.T) {
|
||||
|
||||
qs := []question1649{
|
||||
|
||||
// {
|
||||
// para1649{"aababbab"},
|
||||
// ans1649{2},
|
||||
// },
|
||||
|
||||
// {
|
||||
// para1649{"bbaaaaabb"},
|
||||
// ans1649{2},
|
||||
// },
|
||||
|
||||
{
|
||||
para1649{"b"},
|
||||
ans1649{0},
|
||||
},
|
||||
|
||||
{
|
||||
para1649{"ababaaaabbbbbaaababbbbbbaaabbaababbabbbbaabbbbaabbabbabaabbbababaa"},
|
||||
ans1649{25},
|
||||
},
|
||||
}
|
||||
|
||||
fmt.Printf("------------------------Leetcode Problem 1649------------------------\n")
|
||||
|
||||
for _, q := range qs {
|
||||
_, p := q.ans1649, q.para1649
|
||||
fmt.Printf("【input】:%v 【output】:%v \n", p, minimumDeletions(p.s))
|
||||
}
|
||||
fmt.Printf("\n\n\n")
|
||||
}
|
Reference in New Issue
Block a user