得到交替排列形式字符串

来源:互联网 发布:一个淘宝号最多刷几单 编辑:程序博客网 时间:2024/06/06 08:57

题目:

牛牛有n张卡片排成一个序列.每张卡片一面是黑色的,另一面是白色的。

初始状态的时候有些卡片是黑色朝上,有些卡片是白色朝上。

牛牛现在想要把一些卡片翻过来,得到一种交替排列的形式,即每对相邻卡片的颜色都是不一样的。

牛牛想知道最少需要翻转多少张卡片可以变成交替排列的形式。

分析:

由题意得,要得到交替排列形式,只有BWBWBW....或者WBWBWB...两种可能。

只需要用两个变量记录得到这两种形式串所需要的步数即可,输出最小值


实现代码:


public class Main{    public static void main(String[] args){        Scanner scanner = new Scanner(System.in);        String line = scanner.next();        int b = 0, w = 0;        for(int i=0, len = line.length();i<len;i++){            char c = line.charAt(i);            if((i&1)==0){     //按位与运算符可以用来判断奇偶 (i&1)!=0                if(c=='W') b++;                else  w++;            }else{                if(c=='W') w++;                else b++;            }        }        System.out.println(Math.min(b, w));    }}


原创粉丝点击