思路其实很简单。我还算写复杂了,用了前缀和+后缀和。最主要的还是他这个答案写得太帅了:
我的代码:仿佛跟纯纯C语言没有任何区别23333
func print(a []int){
for _,val := range a{
fmt.Print(val)
fmt.Print(" ")
}
}
func maxScore(s string) int {
left_sum := make([]int,len(s))
right_sum := make([]int,len(s))
if s[0] == '0'{
left_sum[0] = 1;
}else {
left_sum[0] = 0;
}
for i:=1; i<len(s); i++{
left_sum[i]=left_sum[i-1]
if s[i] == '0'{
left_sum[i]++
}
}
if s[len(s)-1] == '1'{
right_sum[len(s)-1] = 1;
}else {
right_sum[len(s)-1] = 0;
}
for i:=len(s)-2; i>=0; i--{
right_sum[i]=right_sum[i+1]
if s[i] == '1'{
right_sum[i]++
}
}
max := -1
for i := 0; i<len(s)-1; i++{
tmp := left_sum[i]+right_sum[i+1]
if(tmp > max){
max = tmp
}
}
return max
}