分数 : 1000 分
问题陈述
您有两个字符串 A=A1A2...An 和 B=B1B2...Bn,它们的长度相同,均由 0 和 1 组成。
您可以使用以下操作以任意顺序和任意次数变换 A:
- 将 A 向左移动一个字符(即,如果 A=A1A2...An,则将 A 替换为 A2A3...AnA1)。
- 将 A 向右移动一个字符(即,如果 A=A1A2...An,则将 A 替换为 AnA1A2...An−1)。
- 选择任意 i 使得 Bi=1。翻转 Ai(即,设置 Ai=1−Ai)。
您的目标是使字符串 A 和 B 相等。
打印实现这一目标所需的最少操作次数,或者如果目标无法实现,则打印 −1。
约束条件
- 1≤∣A∣=∣B∣≤2,000
- A 和 B 由 0 和 1 组成。
输入
输入来自标准输入,格式如下:
A
B
输出
打印使字符串 A 和 B 相等所需的最少操作次数,或者如果目标无法实现,则打印 −1。
1010
1100
3
这里是实现目标的最快方法之一:
- 翻转 A1:A=0010
- 将 A 向左移动:A=0100
- 再次翻转 A1:A=1100
1
0
-1
没有办法翻转 A 中的唯一一个位。
11010
10001
4
这里是实现目标的最快方法之一:
- 将 A 向右移动:A=01101
- 翻转 A5:A=01100
- 将 A 向左移动:A=11000
- 再次将 A 向左移动:A=10001
0100100
1111111
5
以任意顺序翻转 A1、A3、A4、A6 和 A7。