黑白卡片-Java-牛客模拟四

package 模拟四;

import java.util.Scanner;

/**
 * 题目描述:牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的。初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上。牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的。牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式。
 * 输入描述: 输入包括一个字符串S,字符串长度length(3 ≤ length ≤ * 50),其中只包含'W'和'B'两种字符串,分别表示白色和黑色。整个字符串表示卡片序列的初始状态。
 *  
 * 输出描述: 输出一个整数,表示牛牛最多需要翻转的次数。
 * 
 * 输入例子: BBBW
 * 
 * 输出例子: 1
 * 
 * @author 崔洪振367
 * @version 创建时间:2017年6月21日 下午8:12:13
 * 解题思路:对字符串中的B和W进行判断,首先,开始的字符是B,统计需要反转的次数。
 * 另外,开始的字符是W,统计反转的次数。比较两次取最小值就是在反转过程中反转次数的最大值。
 */
public class Q1黑白卡片 {

	public static void main(String[] args) {
		Scanner sc = new Scanner(System.in);
		while(sc.hasNext()){
			String str = sc.next();
			if(str == null || str.length() <3 || str.length() >50){
				return;
			}
			
			int count1 = 0;
			for(int i=0; i<str.length(); i++){
				char c = str.charAt(i);
				if(i%2==0 && c != 'B'){
					count1++;
				}else if(i%2!=0 && c!='W'){
					count1++;
				}
			}
			
			int count2 = 0;
			for(int i=0; i<str.length(); i++){
				char c = str.charAt(i);
				if(i%2==0 && c != 'W'){
					count2++;
				}else if(i%2!=0 && c!='B'){
					count2++;
				}
			}
			
			int reversnum = count1<=count2? count1:count2;
			System.out.println(reversnum);
		}

	}

}

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值