思路其实很简单。我还算写复杂了,用了前缀和+后缀和。最主要的还是他这个答案写得太帅了:

我的代码:仿佛跟纯纯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
- }