第一题没AC,第二题没时间看了。。。bug调了半天,
下面的代码考完又看了下,本地测试可以通过,全当记录。
package main import ( "fmt" ) func main() { var str string fmt.Scan(&str) cnt := []byte(str) n, sum, num := len(cnt), 0, 0 if n == 1 { if cnt[0] == '?' { fmt.Println(3) } else { fmt.Println(str) } return } for i := 0; i < n; i++ { if cnt[i] == '?' { num++ } else { sum += int(cnt[i] - '0') } } for i := 0; i < n && num != 0; i++ { if i == 0 && cnt[i] == '?' { if num == 1 { if sum%3 == 0 { cnt[0] = '3' } else { cnt[0] = byte(3 - sum%3 + int('0')) } fmt.Println(string(cnt)) return } else { if cnt[1] == '1' { cnt[0] = '2' sum += 2 } else { cnt[0] = '1' sum += 1 } num-- } continue } if num > 1 { if cnt[i] == '?' && i < n-1 { if (cnt[i-1] == '0' && cnt[i+1] == '1') || (cnt[i-1] == '1' && cnt[i+1] == '0') { cnt[i] = '2' sum += 2 } else if (cnt[i-1] == '0' && cnt[i+1] != '1') || (cnt[i-1] != '1' && cnt[i+1] == '0') { cnt[i] = '1' sum += 1 } else { cnt[i] = '0' } num-- } } else { if cnt[i] == '?' { if i == n-1 { for val := 0; val < 10; val++ { if (sum+val)%3 == 0 && val != int(cnt[i-1]) { cnt[i] = byte(int('0') + val) break } } } else { for val := 0; val < 10; val++ { if (sum+val)%3 == 0 && val != int(cnt[i-1]) && val != int(cnt[i+1]) { cnt[i] = byte(int('0') + val) break } } } num-- } } } fmt.Println(string(cnt)) return }
```