蓝桥杯官网练习题(翻转)

问题描述

小蓝用黑白棋的  n 个棋子排成了一行,他在脑海里想象出了一个长度为  n 的  01 串  T,他发现如果把黑棋当做  1,白棋当做  0,这一行棋子也是一个长度为  n 的  01 串  S。

小蓝决定,如果在 S 中发现一个棋子和它两边的棋子都不一样,就可以将其翻转变成另一个颜色。也就是说,如果  S 中存在子串  101 或者  010,就可以选择将其分别变为  111 和  000,这样的操作可以无限重复。

小蓝想知道最少翻转多少次可以把  S 变成和  T 一模一样。

输入格式

输入包含多组数据。

输入的第一行包含一个正整数  D 表示数据组数。后面  2D 行每行包含一个  01 串,每两行为一组数据,第  2i−1 行为第  i 组数据的 Ti ,第  2i 行为第  i 组数据的 Si , Si 和 Ti  长度均为 ni 。

输出格式

对于每组数据,输出一行包含一个整数,表示答案,如果答案不存在请输出 -1 。

样例输入

2 
1000111 
1010101 
01000 
11000

样例输出

2 
-1

评测用例规模与约定

import java.util.*;

public class Main {
    public static void main(String[] args) {
        Scanner scan = new Scanner(System.in);
        int n=scan.nextInt();
        while(n>0){
          n--;
          int count=0;
          String t=scan.next();
          String s=scan.next();
          char tt[]=t.toCharArray();
          char ss[]=s.toCharArray();
          for(int i=1;i<s.length()-1;i++){
            if(ss[i-1]==ss[i+1]&&ss[i]!=ss[i-1]&&ss[i]!=tt[i]){
              ss[i]=ss[i-1];
              count++;
            }
          }
          if(Arrays.equals(ss,tt)){
            System.out.println(count);
          }
          else{
            System.out.println(-1);
          }
        }
        scan.close();
    }
}

  • 11
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值