题解 | #小美的01串翻转#

小美的01串翻转

https://ac.nowcoder.com/acm/problem/258418

思路

  • 01 串相邻字符都不相等只有两种情况:
    1. 以0开头:010101....
    2. 以1开头:101010....
  • 因此可以遍历字符串S的所有连续子串,模拟子串变换到情况1和情况2的操作次数,取两者中的最小值,就是该字串的权值。
  • 保存操作次数, 保存操作次数,权值为。 更新为保存s[i, j + 1] -> 010101...操作次数, 为保存s[i, j + 1] -> 101010...操作次数,求得s[i, j + 1]的权值

代码


import (
    "fmt"
)
const N = 2010
var s string

func min(a, b int) int {
    if(a > b) {
        return b
    }
    return a
}

func main() {
    fmt.Scan(&s)
    n := len(s)
    var ans int

    for i := 0; i < n; i++ {
        var t1, t2 int
        for j := i; j < n; j++ {
            if(j % 2 == 0) {
                if(s[j] != '0') {
                    t1++
                } else {
                    t2++
                }
            } else {
                if(s[j] != '1') {
                    t1++
                } else {
                    t2++
                }
            }

            ans += min(t1, t2);  // s[i, j]的权值
        }
    }
    
    fmt.Print(ans)
}
全部评论

相关推荐

淬月星辉:专利是什么?至少描述一下吧,然后把什么计算机二级、普通话这种拉低格调的证书删掉,不然hr以为你没东西写
点赞 评论 收藏
分享
程序员花海:实习和校招简历正确格式应该是教育背景+实习+项目经历+个人评价 其中项目经历注意要体现业务 实习经历里面的业务更是要自圆其说 简历模板尽可能保持干净整洁 不要太花哨的
点赞 评论 收藏
分享
评论
点赞
1
分享

创作者周榜

更多
牛客网
牛客网在线编程
牛客网题解
牛客企业服务