优客文库提供全面的范文格式和文档模板,包括申请书、合同、借据、证明、求职信等,助力您快速撰写专业文档。

小美定义一个 01串的权值为每次操作选择位取反, 使得相邻字符都不相等的最小操作次数。 例1 例如,“10001”的权值是1,因为只需要修改一次对第三个字 例2 符取反即可。 现在小美拿到了

来自 湖南省长沙市 的网友 时间: 热度:°C 加入收藏 我要投稿 点赞()
思路:
1. 遍历给定的01串,对于每个字符,将其作为子串的起始字符。
2. 从起始字符开始,向后遍历,计算每个子串的权值。
3. 对于每个子串,判断相邻字符是否相等,如果相等,则需要进行一次操作,将其中一个字符取反。
4. 统计每个子串的权值,并累加得到所有非空子串的权值之和。

算法实现(使用Golang):
```go
package main

import "fmt"

func main() {
var s string
fmt.Scan(&s)

sum := 0
for i := 0; i < len(s); i++ {
count := 0
for j := i+1; j < len(s); j++ {
if s[j] == s[j-1] {
count++
}
sum += count
}
}

fmt.Println(sum)
}
```

以上是一个简单的算法实现,时间复杂度为O(n^2),其中n为给定01串的长度。
221381
领取福利

微信扫码领取福利

微信扫码分享